Як використовувати пітфон Python для завантаження та збереження поштових файлів для пакету?


105

Якщо я хочу скористатися pipкомандою для завантаження пакету (та його залежностей), але зберігати всі завантажені файли, що завантажуються (скажімо, django-socialregistration.tar.gz) - чи є спосіб це зробити?

Я пробував різні параметри командного рядка, але він, здається, завжди розпаковує та видаляє zipfile - або він отримує zipfile, але тільки для оригінального пакету, а не залежностей.

Відповіді:


78

pip install --downloadзастаріло. Починаючи з версії 8.0.0, ви повинні використовувати pip downloadкоманду:

 pip download <package-name>

3
і як встановити завантажені пакети пізніше?
knocte

2
Це найсучасніша відповідь. Дякую
KJ50

3
@knoctepip install path-to-downloaded-package
Антон Ходак

5
спробував це кілька днів тому, і я думаю, що він все ще намагався отримати деп з Інтернету, а не використовувати завантажені; IIRC, мені довелося скористатисяsudo pip install <path-to-downloaded-package> --no-index --find-links `pwd`
knocte

3
Зауважте, що pip downloadтакож підтримується, -r requirements.txtтак що ви можете легко завантажити їх з підключеного до Інтернету машини, а потім скопіювати на автономний автомат і встановити, як згадували вищезгадані коментатори
Хокінс

113

--download-cacheВаріант повинен робити те , що ви хочете:

pip install --download-cache="/pth/to/downloaded/files" package

Однак, коли я тестував це, основний пакет завантажив, зберег і встановив нормально, але залежності зберегли з їх повним URL-адресом як ім'я - трохи дратує, але всі tar.gzфайли були там.

--downloadВаріант завантажує основний пакет і його залежності і не встановлює будь - якої з них. ( Зверніть увагу , що до версії 1.1--download опції нічого НЕ завантажувати залежності) .

pip install package --download="/pth/to/downloaded/files"

У pipдокументації Контури , використовуючи --downloadдля швидких і локальних установок .


5
Приємно, що справді спрацювало - хоча я позначив --no-installваріант. І ви маєте рацію щодо фанки імен файлів, але , по крайней мере, файли там .
Джон С

востаннє я перевіряв, --downloadваріант завантаження пакета із залежностями.
Мохаммед Нікнам

3
- застарілий кеш-файл завантажений. використовувати pip install --download <dir> <pkg>
ostler.c

18
pip install --downloadтепер застаріле і буде видалено з pip 10. pip.pypa.io/en/latest/reference/pip_download/#overview . Використовуйте pip download somepackage.
Snađошƒаӽ

17
Зокрема, новий еквівалентpip download -d <dir> { -r requirements.txt | <packagename> }
rrauenza

57

Я завжди роблю це для завантаження пакетів:

pip install --download /path/to/download/to_packagename

АБО

pip install --download=/path/to/packages/downloaded -r requirements.txt

І коли я хочу встановити всі ті бібліотеки, які я тільки що завантажив, я роблю це:

pip install --no-index --find-links="/path/to/downloaded/dependencies" packagename

АБО

pip install --no-index --find-links="/path/to/downloaded/packages" -r requirements.txt


Оновлення

Крім того, щоб отримати всі пакунки, встановлені в одній системі, ви можете експортувати їх до того, requirement.txtщо буде використано для їх інсталяції в іншій системі, ми робимо це:

pip freeze > requirement.txt

Потім, ви requirement.txtможете використовувати, як описано вище для завантаження, або зробити це, щоб встановити їх з requirement.txt:

pip install -r requirement.txt

ДОВІДКА: інсталятор піп


6

У версії 7.1.2 піп завантажує колесо пакета (якщо є) із наступним:

pip install package -d /path/to/downloaded/file

Далі завантажується розповсюдження джерела:

pip install package -d /path/to/downloaded/file --no-binary :all:

Вони також завантажують залежності, якщо pip знає про них (наприклад, якщо pip show packageїх перелічує).


Оновлення

Як зазначає Anton Ходак , pip downloadкоманда є кращою , оскільки версії 8. У наведених вище прикладах це означає , що /path/to/downloaded/fileнеобхідно приділяти з опцією -d, тому заміна installз downloadроботами.


Мені доводиться розробляти вікна та розгортатись на RH7, не маючи підключення до Інтернету. Тому я завантажую вихідні пакети з --no-binary: all :. Однак це не вдається при збиранні django-pyodbc-azure == 2.0.4.1, оскільки цей пакет не має джерела. Чи є спосіб завантажити джерело або, якщо цього не існує, завантажити weehl?
cwhisperer

6

Використовуйте pip download <package1 package2 package n>для завантаження всіх пакетів, включаючи залежності

Використовуйте pip install --no-index --find-links . <package1 package2 package n>для встановлення всіх пакетів, включаючи залежності. Він отримує всі файли від CWD. Він нічого не завантажить


2

pip wheel є ще один варіант, який слід розглянути:

pip wheel mypackage -w .\outputdir

Він завантажить пакунки та їх залежності в каталог (поточний робочий каталог за замовчуванням), але він виконує додатковий крок перетворення будь-яких вихідних пакетів на колеса.

Він зручно підтримує файли вимог:

pip wheel -r requirements.txt -w .\outputdir

Додайте --no-depsаргумент, якщо ви хочете лише спеціально запитувані пакети:

pip wheel mypackage -w .\outputdir --no-deps


-1

встановлення пакетів python в автономному режимі

Для користувачів Windows :

Щоб завантажити у файл, відкрийте свій cmd та перегляньте наступне:

cd <*the file-path where you want to save it*>

pip download <*package name*>

пакет і залежності будуть завантажені в поточний робочий каталог.

Щоб встановити з поточного робочого каталогу:

встановіть свою папку, куди ви завантажили як cwd, і виконайте наступні дії:

pip install <*the package name which is downloded as .whl*> --no-index --find-links <*the file locaation where the files are downloaded*>

це дозволить шукати залежності в цьому місці.


якщо ви не вказуєте платформу, вона завантажить файли для поточної ОС. Тому це не спрацює, якщо ви встановите завантажені файли на інші ОС
Прометей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.