Podczas gdy odpowiedzi udzielone przez Remco Haszing i Martijn Pieters są ważne i prawdopodobnie wygodniejsze, jeśli zamierzasz wspierać stare wersje setuptools
, opakowanie Python bardzo się zmieniło od tego czasu. Zamierzam wskazać niektóre z nowych metod określania wymagań.
Najnowsze wersje setuptools zaakceptować PEP 508 stylu specyfikację Zależność:
setup(
# ...
install_requires=[
'pyreadline; platform_system == "Windows"',
],
)
wybrać odpowiedni parametr:
install_requires
: Jakie inne dystrybucje, które są potrzebne do bieżącej dystrybucji pracować poprawnie
extras_require
: słownik mapujący nazwy funkcji opcjonalnych do listy ich wymagań
setup_requires
: inne dystrybucje, które muszą być przedstawiające, aby skrypt instalacyjny działał poprawnie Uwaga: projekty wymienione w setup_requires
NIE zostaną automatycznie zainstalowane. Są one po prostu pobierane do katalogu ./.eggs, jeśli nie są już dostępne lokalnie.
Istnieje również alternatywny sposób dostarczania tych parametrów za pomocą pliku setup.cfg
. See the documentation for more info.
Uwaga: Wsparcie dla PEP 508 i setup.cfg został dodany do setuptools
stopniowo w miarę upływu czasu.Dlatego też, jeśli są używane, dependending od funkcji używasz, możesz dodać następujące linie na początku działalności swojej setup.py
:
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.'
)
Teraz też mają PEP 518, który wprowadza nowe, bardziej zdolny sposób określania setup_requires
w pyproject.toml
pliku:
[build-system]
# Minimum requirements for the build system to execute.
requires = ['setuptools>"38.3.0"', 'wheel'] # PEP 508 specifications.
Jak widać, będziemy w stanie automatycznie instalować i aktualizować setuptools
czy może jakieś inne narzędzie do pakowania. To will be probably shipped with pip 9.1.
Czy to będzie działać, jeśli prześlę dystrybucję binarną? –
Rozkłady binarne są * zależne od platformy *. Generalnie jednak chcesz uniknąć tworzenia dystrybucji binarnych; rób to tylko, jeśli twój pakiet zawiera rozszerzenia C, a potem tylko dla Windows. Zbudowałbyś już * te * w systemie Windows, więc zależność zostanie ustawiona poprawnie. –
Działa to dobrze na 'python setup.py install', ale jeśli prześlę dystrybucję źródłową, jak to będzie działać dla klientów Windows próbujących zainstalować moją dystrybucję źródłową podczas jej pobierania za pomocą' pip install mypkg'? –