Jestem przyzwyczajony do wstępnego pobierania pakietów za pomocą Pip, a następnie kopiowania ich na maszynę docelową do wdrożenia. Z nowo wprowadzonymi Python Wheels, jestem zmuszony do "pip ... --no-use-wheel", ponieważ niektóre z pobranych pakietów są specyficzne dla platformy (rozwijam się na OSX i wdrażam w Debianie) i nie będę zainstalować na komputerze docelowym. Czy istnieje sposób na pobranie Koła na platformy docelowe (lub niezależne od platformy)?Jak pobrać wieloplatformowe koła za pośrednictwem pip?
Odpowiedz
Najprostszym sposobem osiągnięcia tego celu jest użycie przez IMO niestandardowego skryptu.
Możesz uzyskać dostęp do całego indeksu PyPI poprzez interfejs simple, jeśli pakiet, który oferuje, oferuje jedno lub więcej kół, zostaną one wymienione na tym samym adresie + /<package-name>
.
Na przykład: jeśli było zainstalować setuptools
wszystkie koła będzie notowana na: https://pypi.python.org/simple/setuptools/
w skrypcie, należy pamiętać, aby wdrożyć zalecaną priorytet tag w sposób określony przez PEP-425. Zasadniczo sprowadza się to do pobrania najbardziej specyficznej (w przeciwieństwie do najbardziej ogólnej) wersji pakietu, ponieważ zwykle przekłada się to na zalety wydajności, na przykład rozszerzenia C zastępujące czysto Pythonowe implementacje niektórych algorytmów.
Komenda pip download
ma teraz --platform
argument, który można użyć, aby określić żądaną Platforma:
pip download --platform=manylinux1_x86_64 --only-binary=:all: lxml
Dlaczego nie ma pasującej dystrybucji dla niektórych pakietów? Takich jak 'pip download --only-binary =: all: --platform = manylinux1_x86_64 tornado' . Jak mogę pobrać te pakiety? –
@SiminJie nie wszystkie pakiety mają wszystkie dystrybucje dostępne jako koła, ale jestem pewien, że opiekun pakietu zaakceptowałby wkład do adresu ;-) – sitaktif
edytowany tytuł Twojego pytania jako Myślę 'cross-platform' (przypominający' cross-compilation' lepiej wyjaśnia, co próbujesz osiągnąć: stworzenie pakietu binarnego na platformie A dla innej platformy B (w przeciwieństwie do oryginalnego tytułu sugerującego utworzenie pakietu "uniwersalnego", który - BTW - może nie być możliwy, jeśli pakiet ma skompilowany kod w nim) – mac