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

securecurve
источник
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работами.

Jasaarim
источник
Мне нужно разрабатывать в 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
jpmc26
источник
0

Я бы предпочел (RHEL) - pip download package==version --no-deps --no-binary=:all:

Сантош К
источник
-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