Computer >> Máy Tính >  >> Lập trình >> Python

Đóng gói và xuất bản mã Python?

Python cung cấp một cách rất đơn giản để tạo hoặc xuất bản các gói.

Quản lý gói bằng Python có sẵn thông qua các công cụ khác nhau−

  • Pip- Nó vẫn là một trong những lựa chọn ưu tiên vì nó hầu như loại bỏ mọi cài đặt thủ công và cập nhật gói phần mềm cho hệ điều hành. Nó quản lý danh sách đầy đủ các gói và số phiên bản tương ứng của chúng, giúp tăng cường sự sao chép chính xác của toàn bộ các nhóm gói trong một môi trường riêng biệt, riêng biệt.

  • Python Package Index (PPI) là một kho lưu trữ gói công khai gồm các gói do người dùng gửi có thể được cài đặt bằng cách sử dụng pip .i.e. pip cài đặt package_name.

Dưới đây là quy trình từng bước về cách tải lên gói.

Bước 1:Có một gói để tải lên

Tôi cho rằng bạn đã chuẩn bị sẵn gói để xuất bản. Nếu bạn chưa có, hãy làm theo quy trình dưới đây để tạo gói hoặc mô-đun python, điều tốt là nó rất dễ dàng−

  • Tạo tệp python bằng mã của bạn, gọi nó là myfirstPackage.py hoặc myPackageName.py Đây là một mô-đun. một tệp (myfirstPackage.py) với dữ liệu trong đó. Chúng tôi có thể nhập nó hoặc làm bất cứ điều gì chúng tôi muốn.

  • Làm cho nó thành một gói:
Just add an empty __init__.py file to it.

echo >> __init__.py

or use touch command

touch __init_.py


$dir
Volume in drive C has no label.
Volume Serial Number is 8CD6-8D39

Directory of c:\Python\Python361\firstPackage

08-04-2019 05.44 PM <DIR> .
08-04-2019 05.44 PM <DIR> ..
08-04-2019 02.25 PM 47 myFirstPackage.py
08-04-2019 05.44 PM 13 __init__.py

Bạn có thể thấy hai tệp ở trên có bên trong thư mục FirstPackage.

Vậy đó, có một thư mục chứa hai tệp (__init__.py và myfirstPackage.py) được gọi là một gói (myHelloModule).

Đóng gói dự án của bạn

Đầu tiên, sao chép dự án mẫu và đặt cho nó tên mô-đun của bạn−

git clone https://github.com/pypa/sampleproject firstPackage

Đóng gói và xuất bản mã Python?

Các tệp quan trọng là−

  • Setup.py - Nó cho phép chúng tôi chỉ định cấu hình dự án của mình và chạy các lệnh đóng gói:ví dụ:hãy thử lệnh này:python setup.py --help

  • Setup.cfg là một tệp INI chứa các tùy chọn mặc định cho các lệnh setup.py

  • README.rst mô tả mục tiêu của dự án, sử dụng reStructuredText.

Sao chép (các) mô-đun của bạn bên trong thư mục mới này và xóa mô-đun “mẫu” hiện có−

└───firstPackage
│ LICENSE.txt
│ MANIFEST.in
│ myFirstPackage.py
│ README.md
│ setup.cfg
│ setup.py
│ tox.ini
│ __init__.py

Định cấu hình tên, phiên bản, mô tả

Chỉnh sửa setup.py để chứa thông tin cơ bản về gói Python của bạn−

setup.py

import setuptools

with open("README.md", "r") as fh:
long_description = fh.read()

setuptools.setup(
   name="firstPackage",
   version="0.0.1",
   author="Rajesh Joshi",
   author_email="callraj.joshi@gmail.com",
   description="my First Package",
   long_description=long_description,
   long_description_content_type="text/markdown",
   url="https://github.com/pypa/sampleproject",
   packages=setuptools.find_packages(),
   classifiers=[
      "Programming Language :: Python :: 3",
      "License :: OSI Approved :: MIT License",
      "Operating System :: OS Independent",
   ],
)

Và tệp giấy phép của bạn sẽ giống như−

MIT License

Copyright (c) [2019] [firstPackage]

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

.Đối với README

## firstPackage
This is a sample package to learn the steps of creating and publishing package.

Các bước đóng gói thực tế

Cài đặt hoặc cập nhật các công cụ thiết lập và gói bánh xe trong môi trường.

>pip install wheel twine setuptools –upgrade

Đầu tiên, hãy tạo một bản phân phối nguồn. Loại "phân phối" (.i.e. Gói) này yêu cầu một bước xây dựng khi được cài đặt bằng pip.

>python setup.py sdist

Bây giờ chúng tôi muốn cài đặt một “bánh xe” (một gói được xây dựng) phù hợp hơn để cài đặt so với một bản phân phối nguồn.

>python setup.py bdist_wheel

Hy vọng rằng gói sẽ được tạo và bạn có thể thấy tệp nén của gói trong thư mục dist trong thư mục gói đầu tiên của bạn bên cạnh tệp setup.py.

Tải lên gói của bạn

Bây giờ, hãy tạo một môi trường ảo mới tại một số vị trí khác mà bạn chọn và kích hoạt nó, giống như bên dưới−

c:\Users\rajesh>virtualenv myPackage
Using base prefix 'c:\\python\\python361'
New python executable in c:\Users\rajesh\myPackage\Scripts\python.exe
Installing setuptools, pip, wheel...done.

c:\Users\rajesh\myPackage>.\Scripts\activate

(myPackage) c:\Users\rajesh\myPackage>

Sao chép tệp zip được tạo ở trên trong môi trường mới của bạn.

>pip install firstPackage-0.0.1.tar.gz

Để xác minh gói của bạn được cài đặt trong môi trường đã kích hoạt, chỉ cần chạy danh sách pip để hiển thị danh sách tất cả các gói trong môi trường hiện tại của bạn.

>pip list
Package      Version
------------ -------
firstPackage  0.0.1
pip           19.0.3
setuptools    41.0.0
wheel         0.33.1

Bây giờ đã đến lúc xuất bản gói lên PyPI, để nó được công bố rộng rãi.

Trước tiên, hãy truy cập đường dẫn nơi setup.py tồn tại và sau đó cài đặt hoặc cập nhật gói đôi.

>pip install --upgrade twine

Cuối cùng, xuất bản gói của bạn lên PyPI thông qua bộ đôi,

>twine upload dist/*
Enter your username: callraj.joshi
Enter your password:
Uploading distributions to https://upload.pypi.org/legacy/
Uploading firstPackage-0.0.1-py2.py3-none-any.whl
…

Ở trên, chúng ta chỉ cần nhập tên người dùng và mật khẩu, sau đó nó sẽ bắt đầu tải lên gói của chúng ta.