Как использовать 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.