Trong khi câu trả lời được đưa ra bởi Remco Haszing và Martijn Pieters là hợp lệ, và có lẽ thuận tiện hơn nếu bạn định hỗ trợ các phiên bản cũ setuptools
, bao bì Python đã thay đổi rất nhiều kể từ đó. Tôi sẽ chỉ ra một số phương pháp mới để xác định các yêu cầu.
các phiên bản gần đây của setuptools chấp nhận PEP 508 phong cách phụ thuộc đặc điểm kỹ thuật:
setup(
# ...
install_requires=[
'pyreadline; platform_system == "Windows"',
],
)
Chọn tham số đúng:
install_requires
: những gì các bản phân phối khác cần thiết cho việc phân phối hiện tại để làm việc một cách chính xác
extras_require
: từ điển ánh xạ tên các tính năng tùy chọn vào danh sách các yêu cầu của chúng
setup_requires
: các bản phân phối khác cần phải là trình bày cho tập lệnh thiết lập để chạy chính xác Lưu ý: các dự án được liệt kê trong setup_requires
sẽ KHÔNG được cài đặt tự động. Chúng chỉ được tải xuống thư mục ./.eggs nếu chúng chưa sẵn có tại địa phương.
Ngoài ra còn có một cách khác để cung cấp các thông số này thông qua tệp setup.cfg
. See the documentation for more info.
Lưu ý: Hỗ trợ cho PEP 508 và setup.cfg đã được dần dần được thêm vào setuptools
theo thời gian.Vì vậy nếu bạn đang sử dụng chúng, dependending vào các tính năng bạn đang sử dụng, bạn có thể muốn thêm những dòng sau vào beggining của setup.py
của bạn:
from distutils.version import StrictVersion
from setuptools import __version__ as setuptools_version
if StrictVersion(setuptools_version) < StrictVersion('38.3.0'):
raise SystemExit(
'Your `setuptools` version is old. '
'Please upgrade setuptools by running `pip install -U setuptools` '
'and try again.'
)
Chúng tôi bây giờ cũng có PEP 518, giới thiệu một mới và có khả năng hơn cách để xác định setup_requires
trong pyproject.toml
file:
[build-system]
# Minimum requirements for the build system to execute.
requires = ['setuptools>"38.3.0"', 'wheel'] # PEP 508 specifications.
Như bạn có thể thấy, chúng tôi sẽ có thể tự động cài đặt và cập nhật setuptools
hoặc có lẽ một số công cụ đóng gói khác. Điều này will be probably shipped with pip 9.1.
Điều đó vẫn hoạt động nếu tôi tải lên bản phân phối nhị phân? –
Phân phối nhị phân là * nền tảng cụ thể *. Bạn thường muốn tránh tạo ra các bản phân phối nhị phân mặc dù; chỉ làm điều đó nếu gói của bạn chứa phần mở rộng C, và sau đó chỉ dành cho Windows. Và bạn sẽ xây dựng * những * đó trên Windows, vì vậy sự phụ thuộc sẽ được đặt chính xác. –
Điều này làm việc tốt cho 'python setup.py install', nhưng nếu tôi tải lên bản phân phối nguồn, làm thế nào nó sẽ làm việc cho các máy khách Windows đang cố gắng cài đặt phân phối nguồn của tôi khi tải nó bằng cách sử dụng' pip install mypkg'? –