Hướng dẫn how to package python code with dependencies - cách đóng gói mã python với các phụ thuộc

Nếu bạn đóng gói một gói Python để xuất bản, làm thế nào để bạn đảm bảo rằng tất cả các phụ thuộc cần thiết được bao gồm? Giống như PIP là trình quản lý gói tiêu chuẩn cho Python, Setup.py là trái tim và trung tâm của các dự án Python được cài đặt với PIP. Nói một cách đơn giản, setup.py là một mẫu tập lệnh xây dựng được phân phối với gói Python Setuptools Python. & NBSP;

Setuptools là một thư viện quy trình phát triển gói và tiện ích để xây dựng các dự án Python dựa trên các gói và các phụ thuộc của chúng được liệt kê trong tập lệnh setup.py. Một tệp Python chỉ dựa vào thư viện tiêu chuẩn có thể được phân phối lại và tái sử dụng mà không cần sử dụng setuptools. Nhưng đối với các dự án bao gồm nhiều tệp, cần thêm thư viện hoặc cần một phiên bản cụ thể của Python, Setuptools sẽ được yêu cầu. & NBSP;

Cập nhật các công cụ Python

Bước đầu tiên là một thực hành tốt nhất: đảm bảo các công cụ của bạn được cập nhật.

$ python -m pip install --upgrade pip setuptools

Setup.py ví dụ & nbsp;

Tập lệnh sau đây là một ví dụ về cách tạo tập lệnh setup.py cho dự án của bạn. Kịch bản nêu ra thông tin bạn cần cung cấp, bao gồm:

  • Tên dự án - Nhập tên cho dự án của bạn trong báo giá
  • Các gói để bao gồm trong phân phối - đối số mặc định Find_Packages (‘,)find_packages(‘,’) default argument will incorporate all packages that include an __init__.py file and are located in the local directory where setup.py is installed
  • Số phiên bản dự án - Nhập số phiên bản cho dự án trong báo giá
  • Liệt kê giấy phép cho dự án - Nhập tên của giấy phép bạn đang cấp phép cho dự án của mình để sử dụng theo trích dẫn
  • Mô tả ngắn về thư viện của bạn - Nhập một mô tả ngắn gọn về dự án của bạn trong trích dẫn
  • Mô tả dài về thư viện của bạn - Nhập mô tả chi tiết hơn về dự án của bạn trong văn bản hoặc sử dụng Markdown
  • Tên của bạn - Nhập tên của bạn trong trích dẫn để biểu thị ai là tác giả
  • Địa chỉ email của bạn - Tùy chọn cung cấp địa chỉ email trong báo giá nơi người dùng có thể liên hệ với bạn
  • Liên kết đến kho lưu trữ hoặc trang web GitHub của bạn - Tùy chọn cung cấp một liên kết đến dự án của bạn repo
  • Tải xuống liên kết từ nơi dự án có thể được tải xuống - cung cấp một URL cho mã nguồn dự án của bạn trong báo giá
  • Danh sách các từ khóa - Cung cấp danh sách các từ khóa trong các dấu ngoặc vuông được liên kết với dự án của bạn để giúp tìm kiếm dễ dàng hơn
  • Danh sách phụ thuộc dự án - Cung cấp một danh sách tất cả các phụ thuộc mà dự án của bạn yêu cầu trong khung vuông. Cách dễ nhất để cung cấp điều này là sao chép và dán từ phần install_requires (xem bên dưới).install_requires section (see below).
  • https://pypi.org/ classifiers - Cung cấp một danh sách tất cả các phân loại áp dụng cho dự án của bạn trong dấu ngoặc vuông. Bạn có thể tìm thấy một danh sách toàn diện các trình phân loại tại https://pypi.org/ classifiershttps://pypi.org/classifiers
from distutils.core import setup
from setuptools import find_packages
import os

# Optional project description in README.md:
current_directory = os.path.dirname(os.path.abspath(__file__))

try:
    with open(os.path.join(current_directory, 'README.md'), encoding='utf-8') as f:
        long_description = f.read()
except Exception:
    long_description = ''
setup(

# Project name: 
name='',

# Packages to include in the distribution: 
packages=find_packages(','),

# Project version number:
version='',

# List a license for the project, eg. MIT License
license='',

# Short description of your library: 
description='',

# Long description of your library: 
long_description=long_description,
long_description_content_type='text/markdown',

# Your name: 
author='',

# Your email address:
author_email='',

# Link to your github repository or website: 
url='',

# Download Link from where the project can be downloaded from:
download_url='',

# List of keywords: 
keywords=[],

# List project dependencies: 
install_requires=[],

# https://pypi.org/classifiers/ 
classifiers=[]
)

Ví dụ Install_Requires

install_requires là một phần trong tệp setup.py mà bạn cần nhập danh sách các phụ thuộc tối thiểu cần thiết cho một dự án để chạy chính xác. Khi pip chạy setup.py, nó sẽ cài đặt tất cả các phụ thuộc được liệt kê trong install_requires. is a section within the setup.py file in which you need to input a list of the minimum dependencies needed for a project to run correctly. When pip runs setup.py, it will install all of the dependencies listed in install_requires.

Ví dụ: nếu dự án của bạn bao gồm matplotlib, bạn sẽ cần phải liệt kê nó, cũng như sự phụ thuộc của nó trong numpy trong install_requires như được hiển thị bên dưới:

setup(
...
install_requires=[
'<matplotlib>',
'<numpy>'
] 
...)

Example of Install_requires with Platform Specific Dependencies 

Bạn có thể sửa đổi install_requires bằng cách thêm vào nền tảng cụ thể và cụ thể phiên bản & nbsp; Sự phụ thuộc, tùy thuộc vào môi trường mà một dự án sẽ được cài đặt. Chẳng hạn, nếu ví dụ trước đây của chúng tôi bao gồm matplotlib v3.2.1 và numpy v1.17.4 trên Python 3.6.6 Đối với Linux, chúng tôi có thể chỉ định:install_requires by adding in platform-specific and version-specific  dependencies, depending on the environment that a project is to be installed on. For instance, if our previous example included matplotlib v3.2.1 and numpy v1.17.4 on Python 3.6.6 for Linux, we could specify:

setup(
...
install_requires=[
"<matplotlib>;python_version<'<3.6.6>'",
"<numpy> >= <1.17.4>;platform_system=='<Linux>'"

 ...)

Để cài đặt một tệp setup.py bao gồm các phụ thuộc được liệt kê trong install_inwires:

$ python setup.py install 

Khi lệnh được chạy, tất cả các phụ thuộc chưa được cài đặt sẽ được tải xuống, xây dựng (nếu cần) và được cài đặt. Bất kỳ tập lệnh nào yêu cầu các phụ thuộc cụ thể trong thời gian chạy sẽ được cài đặt với trình bao bọc đảm bảo các phiên bản chính xác được thêm vào sys.Path (đường dẫn hệ thống).sys.path (system path).

Sự phụ thuộc không được tìm thấy trong pypi & nbsp;

Nếu dự án của bạn có yêu cầu phụ thuộc hiện không nằm trong Chỉ số gói Python (PYPI), bạn vẫn có thể bao gồm chúng nếu chúng có thể được truy cập qua HTTP và được đóng gói dưới dạng tệp trứng, tệp .py hoặc VCS (kiểm soát phiên bản Hệ thống) Kho lưu trữ, chẳng hạn như Git hoặc Subversion.

Để tải xuống các phụ thuộc không tìm thấy trong PYPI, bạn sẽ cần thêm URL vào phần phụ thuộc_links trong Setup () trong tệp setup.py. Giả sử rằng các phụ thuộc được đóng gói chính xác, chúng sẽ được cài đặt tự động:

setup( 
... 
dependency_links=['http://github.com///tarball/master#egg=-']
...

Để kiểm tra sự phụ thuộc không tìm thấy trong PYPI, hãy thay thế - bằng _ trong tên gói và phiên bản # trong đối số phụ thuộc_links:

dependency_links=['http://github.com///tarball/master#egg=_']

Bao bì Python cho Windows và Mac

Trong một số trường hợp, nó có thể muốn phân phối lại mã Python của bạn như:

  • Trình cài đặt - Nếu bạn có phân phối Python mà bạn muốn cung cấp cho các nhà phát triển khác, hoặc nếu không có nhu cầu thực hiện cài đặt im lặng qua mạng, bạn có thể muốn tạo MSI, PKG hoặc Tarball & NBSP; – if you have a Python distribution you want to make available to other developers, or else have a need to perform silent installations over a network, you may want to create an MSI, PKG or tarball 
  • Executables-Nếu bạn muốn phân phối mã Python của mình cho người dùng Windows để họ chỉ có thể nhấp đúp để chạy nó trên hệ thống của họ, bạn có thể muốn tạo một tệp EXE – if you want to distribute your Python code to Windows users so they can just double-click in order to run it on their system, you may want to create an EXE file

Trình cài đặt

Mặc dù có một số công cụ khác nhau mà bạn có thể sử dụng để tạo trình cài đặt, nhưng chúng thường yêu cầu:

  • Nhiều công cụ, một cho mỗi hệ điều hành (HĐH) bạn muốn triển khai đến & NBSP;
  • Chuyên môn trong mỗi hệ điều hành mục tiêu mà bạn muốn hỗ trợ

Thay vào đó, hãy xem xét sử dụng nền tảng ActiveSestate, sẽ tự động đóng gói phân phối Python của bạn để triển khai trên Windows (MSI), MAC (PKG) và Linux (TAR), mà không cần chuyên môn OS. Tạo một tài khoản miễn phí để bắt đầu ngay hôm nay.Create a free account to get started today.

Execlables

Nếu bạn thích kết gói mã Python của mình như một Windows có thể thực thi, có một số công cụ bạn có thể sử dụng, bao gồm Py2Exe và CX_Freeze. Để biết thêm thông tin, hãy tham khảo bài đăng trên blog của chúng tôi cách chuyển đổi .Py sang .exeHow to Convert .py to .exe


Nền tảng hoạt động

Nền tảng ActiveState là một tự động hóa bản dựng dựa trên đám mây và & nbsp; phụ thuộc & nbsp; Management & nbsp; Tool for & nbsp; python. Nó cung cấp & nbsp; phụ thuộc & nbsp; độ phân giải cho:

  • Python & nbsp; lõi ngôn ngữ, bao gồm & nbsp; Python & nbsp; 2.7 và & nbsp; Python & nbsp; 3.5+
  • Python & nbsp; gói & nbsp; và các phụ thuộc của họ & nbsp; bao gồm: bao gồm:
    • Transitive dependencies (ie., dependencies of dependencies)
    • Thư viện C và Fortran được liên kết, vì vậy bạn có thể xây dựng các gói khoa học dữ liệu
    • Cấp hệ điều hành Cấp & NBSP; Phụ thuộc & NBSP; cho Windows, & NBSP; Linux và MacOS
    • Chia sẻ & nbsp;

Hướng dẫn how to package python code with dependencies - cách đóng gói mã python với các phụ thuộc
Nền tảng ActiveState là giải pháp quản lý gói Python duy nhất không chỉ giải quyết các phụ thuộc mà còn cung cấp cách giải quyết cho các xung đột phụ thuộc. & NBSP;

Chỉ cần tuân theo các lời nhắc hướng dẫn sẽ giải quyết xung đột, loại bỏ & nbsp; phụ thuộc & nbsp; địa ngục.

Bạn có thể thử nền tảng ActiveState miễn phí bởi & nbsp; tạo tài khoản bằng email của bạn hoặc & nbsp; github & nbsp; thông tin đăng nhập. & Nbsp; Bắt đầu bằng cách tạo một & nbsp; python & nbsp; Project, chọn & nbsp; phiên bản mới nhất áp dụng cho dự án của bạn, hệ điều hành của bạn và bắt đầu thêm && nbsp; cài đặt các gói. Hoặc bắt đầu bằng cách chỉ cần nhập & nbsp của bạn; urmement.txt & nbsp; file & nbsp; và tạo a & nbsp; python & nbsp; phiên bản & nbsp; với tất cả các thư viện & nbsp; python & nbsp; bạn cần.

Kết luận: Tương lai của & nbsp; Python & nbsp; gói & nbsp; && nbsp;

Nếu bạn giống như hầu hết các nhà phát triển & nbsp; Python, bạn có thể duy trì nhiều công cụ, môi trường xây dựng và các giải pháp khác để giải quyết các vấn đề mà một công cụ duy nhất, nền tảng Activestate có thể giải quyết ngày hôm nay. Bằng cách áp dụng nền tảng ActiveState, bạn có thể:

  • Tăng tính bảo mật của & nbsp; Python & nbsp; môi trường
  • Cải thiện tính minh bạch của & nbsp của bạn; nguồn mở & nbsp; chuỗi cung ứng
  • Eliminate dependency hell
  • Giảm "các tác phẩm trên máy của tôi" các vấn đề

Cuối cùng, các nhà phát triển sẵn sàng áp dụng nền tảng ActiveState cho & NBSP; Python Packaging sẽ dành ít thời gian để đấu vật với dụng cụ và nhiều thời gian tập trung vào việc làm những gì họ làm tốt nhất: mã hóa.

Chỉ cần chạy lệnh sau để cài đặt Python 3.9 và trình quản lý gói của chúng tôi, công cụ trạng thái:

các cửa sổ

powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/install.ps1'))) -activate-default ActiveState-Labs/Python-3.9Beta"

Linux

sh <(curl -q https://platform.activestate.com/dl/cli/install.sh) --activate-default ActiveState-Labs/Python-3.9Beta

Bây giờ bạn có thể chạy & nbsp; Cài đặt trạng thái. & Nbsp; tìm hiểu thêm về & nbsp; cách sử dụng công cụ trạng thái & nbsp; để quản lý môi trường Python của bạn.

Đề xuất đọc

Cách sử dụng các công cụ quản lý phụ thuộc Python

Cách quản lý các phụ thuộc Python với môi trường ảo

Làm thế nào để tôi bao gồm các phụ thuộc vào một dự án Python?

Nếu dự án của bạn có yêu cầu phụ thuộc hiện không nằm trong Chỉ số gói Python (PYPI), bạn vẫn có thể bao gồm chúng nếu chúng có thể được truy cập qua HTTP và được đóng gói dưới dạng tệp trứng, tệp .py hoặc VCS (kiểm soát phiên bản Hệ thống) Kho lưu trữ, chẳng hạn như Git hoặc Subversion.

Làm thế nào để đóng gói Python?

Bao bì Python cơ bản yêu cầu tối thiểu của tệp setup.py trong gốc của dự án mà sau đó bạn có thể gọi trên python setup.py sdist. setup.py gist. CMDClass là một phần mở rộng cho setuptools và là lớp sẽ đóng gói mã để phân phối nhưng cũng thu thập tất cả các gói từ các yêu cầu.txt vào kho lưu trữ.

Làm cách nào để kiểm tra xem một phụ thuộc có được cài đặt trong Python không?

Lệnh kiểm tra PIP - Kiểm tra các phụ thuộc Python Sau khi cài đặt vì PIP hiện không giải quyết các vấn đề phụ thuộc vào cài đặt, tùy chọn lệnh PIP Check có thể được sử dụng để xác minh rằng các phụ thuộc đã được cài đặt đúng trong dự án của bạn.

Các công cụ quản lý phụ thuộc khác nhau trong Python là gì?

Có nhiều công cụ và phương pháp quản lý phụ thuộc khác nhau để quản lý và thêm các phụ thuộc vào dự án Python, từ PIP đến Conda đến nền tảng Activeestate. Ở đây, một bản tóm tắt của một số công cụ quản lý phụ thuộc phổ biến nhất. PIP là công cụ tiêu chuẩn thực tế để cài đặt các gói Python và quản lý các phụ thuộc của chúng.

Trò chơi phụ thuộc gói Python là gì?

Sự phụ thuộc là tất cả các thành phần phần mềm theo yêu cầu của dự án của bạn để nó hoạt động như dự định và tránh các lỗi thời gian chạy.Bạn có thể tin tưởng vào PYPI (Chỉ số gói Python) để cung cấp các gói có thể giúp bạn bắt đầu mọi thứ từ thao tác dữ liệu đến học máy đến phát triển web, v.v.all of the software components required by your project in order for it to work as intended and avoid runtime errors. You can count on PyPI (the Python Package Index) to provide packages that can help you get started on everything from data manipulation to machine learning to web development, and more.

Làm thế nào để Python xử lý phụ thuộc gói?

Sử dụng VETV và PipENV là hai phương pháp quản lý các phụ thuộc trong Python.Chúng đơn giản để thực hiện và, đối với hầu hết người dùng, các giải pháp đầy đủ để xử lý nhiều dự án với các phụ thuộc khác nhau.Tuy nhiên, chúng không phải là giải pháp duy nhất.Các dịch vụ khác có thể bổ sung cho việc sử dụng của họ.. They are simple to implement and, for most users, adequate solutions for handling multiple projects with different dependencies. However, they are not the only solutions. Other services can complement their use.