Hướng dẫn how do i make my first python package? - làm cách nào để tạo gói python đầu tiên của tôi?

Hướng dẫn how do i make my first python package? - làm cách nào để tạo gói python đầu tiên của tôi?

Vài tháng trước, tôi quyết định phát hành Caer, một gói tầm nhìn máy tính có sẵn ở Python. Tôi thấy quá trình này là đau đớn dữ dội. Bạn có thể đoán tại sao - tài liệu nhỏ (và khó hiểu), thiếu các hướng dẫn tốt, v.v.

Vì vậy, tôi quyết định viết bài viết này với hy vọng rằng nó sẽ giúp những người đang đấu tranh để làm điều này. Chúng tôi sẽ xây dựng một mô -đun rất đơn giản và làm cho nó có sẵn cho bất kỳ ai trên thế giới.

Nội dung của mô -đun này theo một cấu trúc rất cơ bản. Tổng cộng, có bốn tệp Python, mỗi tệp có một phương thức duy nhất trong đó. Chúng tôi sẽ giữ điều này thực sự đơn giản cho đến bây giờ.

base-verysimplemodule  --> Base
└── verysimplemodule   --> Actual Module
    ├── extras
    │   ├── multiply.py
    │   ├── divide.py
    ├── add.py
    ├── subtract.py

Bạn sẽ nhận thấy rằng tôi có một thư mục gọi là

from file import method 

# 'method' is a function that is present in a file called 'file.py'
2, đến lượt nó, có hai tệp Python
from file import method 

# 'method' is a function that is present in a file called 'file.py'
3 và
from file import method 

# 'method' is a function that is present in a file called 'file.py'
4. Ngoài ra còn có một thư mục gọi là
from file import method 

# 'method' is a function that is present in a file called 'file.py'
5 (chứa
from file import method 

# 'method' is a function that is present in a file called 'file.py'
6 và
from file import method 

# 'method' is a function that is present in a file called 'file.py'
7). Thư mục này sẽ tạo thành cơ sở của mô -đun Python của chúng tôi.

Mang ra __init__s

Một cái gì đó mà bạn sẽ luôn tìm thấy trong mỗi gói Python là một tệp

from file import method 

# 'method' is a function that is present in a file called 'file.py'
8. Tệp này sẽ cho Python coi các thư mục là các mô-đun (hoặc mô-đun phụ).

Rất đơn giản, nó sẽ giữ tên của tất cả các phương thức trong tất cả các tệp Python có trong thư mục ngay lập tức.

Một tệp

from file import method 

# 'method' is a function that is present in a file called 'file.py'
8 điển hình có định dạng sau:

from file import method 

# 'method' is a function that is present in a file called 'file.py'

Khi xây dựng các gói trong Python, bạn được yêu cầu thêm một tệp

from file import method 

# 'method' is a function that is present in a file called 'file.py'
8 trong mỗi thư mục phụ trong gói của bạn. Những thư mục phụ này là các mô-đun phụ của gói của bạn.

Đối với trường hợp của chúng tôi, chúng tôi sẽ thêm các tệp __init__.py của chúng tôi vào thư mục mô -đun thực tế

from file import method 

# 'method' is a function that is present in a file called 'file.py'
2, như thế này:

from add import add
from subtract import subtract

Và chúng tôi sẽ làm điều tương tự cho thư mục

from file import method 

# 'method' is a function that is present in a file called 'file.py'
5, như thế này:

from multiply import multiply
from divide import divide

Sau khi thực hiện xong, chúng tôi đã đi được nửa chặng đường!

Cách thiết lập setup.py

Trong thư mục

from add import add
from subtract import subtract
3 (và trong cùng thư mục với mô -đun
from file import method 

# 'method' is a function that is present in a file called 'file.py'
2 của chúng tôi), chúng tôi cần thêm một tệp
from add import add
from subtract import subtract
5. Tệp này là điều cần thiết nếu bạn có ý định xây dựng mô -đun thực tế được đề cập.

Lưu ý: Hãy đặt tên cho tệp

from add import add
from subtract import subtract
5 như bạn muốn. Tệp này không dành riêng cho tệp
from file import method 

# 'method' is a function that is present in a file called 'file.py'
8 của chúng tôi.

Các lựa chọn tên có thể là

from add import add
from subtract import subtract
8 và
from add import add
from subtract import subtract
9, nhưng nó thường thực hành tốt nhất để gắn bó với
from add import add
from subtract import subtract
5.

Tệp

from add import add
from subtract import subtract
5 sẽ chứa thông tin về gói của bạn, cụ thể là tên của gói, phiên bản, phụ thuộc nền tảng và nhiều hơn nữa.

Đối với mục đích của chúng tôi, chúng tôi sẽ không yêu cầu thông tin meta nâng cao, vì vậy mã sau đây sẽ phù hợp với hầu hết các gói bạn xây dựng:

from setuptools import setup, find_packages

VERSION = '0.0.1' 
DESCRIPTION = 'My first Python package'
LONG_DESCRIPTION = 'My first Python package with a slightly longer description'

# Setting up
setup(
       # the name must match the folder name 'verysimplemodule'
        name="verysimplemodule", 
        version=VERSION,
        author="Jason Dsouza",
        author_email="<>",
        description=DESCRIPTION,
        long_description=LONG_DESCRIPTION,
        packages=find_packages(),
        install_requires=[], # add any additional packages that 
        # needs to be installed along with your package. Eg: 'caer'
        
        keywords=['python', 'first package'],
        classifiers= [
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Education",
            "Programming Language :: Python :: 2",
            "Programming Language :: Python :: 3",
            "Operating System :: MacOS :: MacOS X",
            "Operating System :: Microsoft :: Windows",
        ]
)

Với điều đó, tất cả những gì chúng ta phải làm tiếp theo là chạy lệnh sau trong cùng thư mục với

from add import add
from subtract import subtract
3:

python setup.py sdist bdist_wheel

Điều này sẽ xây dựng tất cả các gói cần thiết mà Python sẽ yêu cầu. Các lệnh

from multiply import multiply
from divide import divide
3 và
from multiply import multiply
from divide import divide
4 sẽ tạo phân phối nguồn và một bánh xe mà sau này bạn có thể tải lên PYPI.

Pypi - Chúng tôi đến đây!

PYPI là kho lưu trữ Python chính thức nơi lưu trữ tất cả các gói Python. Bạn có thể nghĩ về nó như là github cho các gói Python.

Để cung cấp gói Python của bạn cho mọi người trên khắp thế giới, bạn sẽ cần phải có một tài khoản với PYPI.

Với điều đó, tất cả chúng tôi đã thiết lập để tải lên gói của chúng tôi trên PYPI. Bạn có nhớ phân phối nguồn và bánh xe được xây dựng khi chúng tôi chạy

from multiply import multiply
from divide import divide
5 không? Vâng, đó là những gì thực sự sẽ được tải lên PYPI.

Nhưng trước khi bạn làm điều đó, bạn cần cài đặt

from multiply import multiply
from divide import divide
6 nếu bạn không cài đặt nó. Nó đơn giản như & nbsp; ________ 37.

Cách tải gói của bạn lên PYPI

Giả sử bạn đã cài đặt

from multiply import multiply
from divide import divide
6, tiếp tục và chạy:

twine upload dist/*

Lệnh này sẽ tải lên nội dung của thư mục

from multiply import multiply
from divide import divide
9 được tự động tạo khi chúng tôi chạy
from multiply import multiply
from divide import divide
5. Bạn sẽ nhận được lời nhắc yêu cầu bạn về tên người dùng và mật khẩu pypi của bạn, vì vậy hãy tiếp tục và nhập các tên gọi đó.

Bây giờ, nếu bạn đã làm theo hướng dẫn này đến T, bạn có thể gặp lỗi dọc theo các dòng kho lưu trữ đã tồn tại.repository already exists.

Điều này thường là do có một cuộc đụng độ tên giữa tên của gói của bạn và một gói đã tồn tại. Nói cách khác, thay đổi tên của gói của bạn - người khác đã lấy tên đó.

Và đó là nó!

Để tự hào

from setuptools import setup, find_packages

VERSION = '0.0.1' 
DESCRIPTION = 'My first Python package'
LONG_DESCRIPTION = 'My first Python package with a slightly longer description'

# Setting up
setup(
       # the name must match the folder name 'verysimplemodule'
        name="verysimplemodule", 
        version=VERSION,
        author="Jason Dsouza",
        author_email="<>",
        description=DESCRIPTION,
        long_description=LONG_DESCRIPTION,
        packages=find_packages(),
        install_requires=[], # add any additional packages that 
        # needs to be installed along with your package. Eg: 'caer'
        
        keywords=['python', 'first package'],
        classifiers= [
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Education",
            "Programming Language :: Python :: 2",
            "Programming Language :: Python :: 3",
            "Operating System :: MacOS :: MacOS X",
            "Operating System :: Microsoft :: Windows",
        ]
)
1 Cài đặt mô -đun của bạn, hãy kích hoạt thiết bị đầu cuối và chạy:

pip install  

# in our case, this is
pip install verysimplemodule

Xem cách Python cài đặt gọn gàng gói của bạn từ các nhị phân được tạo ra trước đó.

Mở vỏ tương tác Python và thử nhập gói của bạn:

>> import verysimplemodule as vsm

>> vsm.add(2,5)
7
>> vsm.subtract(5,4)
1

Để truy cập các phương thức chia và nhân (hãy nhớ rằng chúng có trong một thư mục có tên là

from file import method 

# 'method' is a function that is present in a file called 'file.py'
5?), Chạy:

>> import verysimplemodule as vsm

>> vsm.extras.divide(4,2)
2
>> vsm.extras.multiple(5,3)
15

Nó đơn giản như vậy.

Xin chúc mừng! Bạn chỉ cần xây dựng gói Python đầu tiên của mình. Mặc dù rất đơn giản, gói của bạn hiện có sẵn để được tải xuống bởi bất kỳ ai trên thế giới (tất nhiên là họ có Python, tất nhiên).

Cái gì tiếp theo?

Kiểm tra pypi

Gói mà chúng tôi đã sử dụng trong hướng dẫn này là một mô -đun cực kỳ đơn giản - các hoạt động toán học cơ bản của phép bổ sung, trừ, nhân và chia. Nó không có ý nghĩa gì khi tải chúng trực tiếp lên PYPI, đặc biệt là lần đầu tiên bạn thử điều này.

May mắn cho chúng tôi, có PYPI thử nghiệm, một thể hiện riêng của PYPI nơi bạn có thể thử nghiệm và thử nghiệm trên gói của mình (bạn sẽ cần đăng ký một tài khoản riêng trên nền tảng).

Quá trình bạn theo dõi để tải lên để kiểm tra PYPI khá giống nhau với một vài thay đổi nhỏ.

from file import method 

# 'method' is a function that is present in a file called 'file.py'
0

Để tải xuống các dự án từ thử nghiệm PYPI:

from file import method 

# 'method' is a function that is present in a file called 'file.py'
1

Thông tin meta nâng cao

Thông tin meta mà chúng tôi đã sử dụng trong tệp

from add import add
from subtract import subtract
5 rất cơ bản. Bạn có thể thêm thông tin bổ sung như nhiều người bảo trì (nếu có), email của tác giả, thông tin giấy phép và toàn bộ một loạt các dữ liệu khác.

Bài viết này sẽ chứng minh đặc biệt hữu ích nếu bạn có ý định làm như vậy.

Nhìn vào các kho lưu trữ khác

Nhìn vào cách các kho lưu trữ khác đã xây dựng các gói của họ có thể chứng minh là siêu hữu ích cho bạn.

Khi xây dựng Caer, tôi sẽ liên tục nhìn vào cách Numpy và Sonnet thiết lập các gói của họ. Tôi sẽ khuyên bạn nên xem các kho lưu trữ của Caer, Numpy, và Tensorflow nếu bạn có kế hoạch xây dựng các gói tiên tiến hơn một chút.



Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu