Зависимости от поставщиков не могут найти криптографию

#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).