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; Show
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ụ PythonBướ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:
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_Requiresinstall_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/ Để 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/ Bao bì Python cho Windows và MacTrong 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 đặtMặ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:
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. ExeclablesNế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 độngNề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:
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ể:
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 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. |