#python #python-3.x #pip #cloud-foundry #paramiko
Вопрос:
Я пытаюсь развернуть приложение в cloud foundry, в котором есть ссылка на пакет paramiko, который, в свою очередь, ссылается на пакет криптографии. Я хотел бы развернуть это с полной изоляцией сборки, поэтому я продаю зависимости и нажимаю на CF. Однако я сталкиваюсь с проблемой, когда пакет сборки python пытается установить paramiko, и он завершается ошибкой «не найдено» для пакета криптографии. Это отлично работает, если я попытаюсь установить без установки.
Это команда, которую мы используем для загрузки пакетов в папку поставщика: pip download -r requirements.txt --no-binary :none: --dest vendor
Это ошибка, с которой мы сталкиваемся:
Я вижу рассматриваемый пакет, когда перечисляю содержимое каталога поставщиков
Комментарии:
1. можете ли вы попробовать использовать
pip install --download vendor -r requirements.txt
вместо этого? (В соответствии с этим обсуждением)2. Спасибо за ответ @EdoAkse. Команда pip install —download устарела ( github.com/pypa/pip/pull/3085 ) и приведенная выше команда является рекомендацией из документов пакета сборки python
3. Каково содержимое
./vendor
каталога? Можете ли вы обновить свой ответ, чтобы включить это? Вы видите там файл для пакета, на который он жалуется?4. Да @DanielMikusa Я вижу пакет в каталоге поставщиков. Я обновил свой пост скриншотом.
5. Есть ли у вас локально та же версия python, которая устанавливается с помощью пакета сборки? Вывод
cf push
должен показывать, какая версия Python устанавливается, сравните ее сpython -V
локальной и убедитесь, что они, по крайней мере, на одной и той же второстепенной версии.
Ответ №1:
Вы, вероятно, используете версию pip
не менее 20.3 или выше, и ваш пакет сборки в CF, вероятно, использует версию pip
ниже 20.3. Согласно этой документации, только pip
версии 20.3 и выше понимают manylinux_x_y
теги, именно так помечается ваш cryptography-3.4.8-cp36-abi3-manylinux_2_24_x86_64.whl
файл ( manylinux_2_24
). cryptography
есть другие диски для той же версии, но с другими тегами, которые pip
будут понятны более низким версиям, но вы их не загружаете, потому что ваша версия pip
понимает manylinux_x_y
теги.
Из других файлов wheel, показанных на снимке экрана, видно, что ваш пакет сборки должен использовать pip
версию 19.0 или выше, поскольку он успешно обрабатывается bcrypt
с manylinux2010
помощью тега.
Чтобы выбрать правильное колесо, которое CF сможет найти, используйте флаг --platform manylinux2010_x86_64
в вашей команде загрузки. Если он использует pip
версию 19.3 или выше, что, скорее всего, так и есть, вы можете использовать --platform manylinux2014_x86_64
вместо этого флаг. cryptography
имеет колеса с любым из этих тегов, как для текущей версии (v35.0.0), так и для версии, которую вы пытались использовать (v3.4.8).