Как использовать Python pip для загрузки и сохранения заархивированных файлов для пакета?


105

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

Я пробовал различные параметры командной строки, но кажется, что он всегда распаковывает и удаляет zip-файл - или получает zip-файл, но только для исходного пакета, а не для зависимостей.

Ответы:


80

pip install --downloadустарела. Начиная с версии 8.0.0 следует использовать pip downloadкоманду:

 pip download <package-name>

3
а как потом установить скачанные пакеты?
knocte

2
Это самый актуальный ответ. Спасибо
KJ50

4
@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вариант. И вы правы насчет забавных имен файлов, но, по крайней мере, файлы есть .
John C

в прошлый раз, когда я проверял, --downloadвариант загрузки пакета с зависимостями.
Мохаммад Никнам

3
--download-cache устарел. используйте pip install --download <dir> <pkg>
ostler.c

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

18
В частности, новый эквивалент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

СПРАВКА: установщик pip


6

В версии 7.1.2 pip загружает колесо пакета (если доступно) со следующим:

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работами.


Мне нужно разрабатывать в Windows и развертывать на 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*>

это будет искать зависимости в этом месте.


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