Прерывистая ошибка установки pip в virtualenv? - PullRequest
0 голосов
/ 12 января 2020

Для приведенных ниже команд:

virtualenv --system-site-packages `pwd`/.test

# load virtual environment
source `pwd`/.test/bin/activate

# install required python modules
# for some reason argparse is not included with credstash install but required at runtime :(
#PYPI_REPO=http://${PYPI_DNS}/aes/release/+simple/
#PYPI_DNS is internal company DNS 
pip install pip --upgrade -i ${PYPI_REPO} --quiet
pip install argparse==1.4.0 -i ${PYPI_REPO} --trusted-host ${PYPI_DNS} --quiet
pip install credstash==1.14.0 -i ${PYPI_REPO} --trusted-host ${PYPI_DNS} --quiet

Это иногда успешно работает.

  1. Однако иногда это не будет работать при установке argparse:

    Не удалось найти версию, которая удовлетворяет требованию argparse == 1.4.0 (из версий:) Не найдено соответствующего распределения для argparse == 1.4.0

  2. Тогда в другое время он не сможет установить credsta sh:

    Не удалось найти версию, которая удовлетворяет требованию boto3> = 1.1.1 (из credstash == 1.14.0) (из версий:) Не найдено подходящего дистрибутива для boto3 > = 1.1.1 (из credstash == 1.14.0)

Я не могу найти причину сбоя и успешного завершения.

Обратите внимание, что приведенные выше команды взяты из файла xxx. sh, который запускается как часть сценария пользовательских данных EC2 - он работает почти на 90% при запуске EC2.

Однако он работает в 10% случаев, когда я запускаю xxx. sh вручную (sh запускает ansible playbook после кредл sh установлен - следовательно, запуск вручную - это более быстрый способ тестирования playbook) при SSHing на экземпляре EC2 - ошибка переключается между двумя сообщениями об ошибках, которые я изложил выше. Я не python разработчик, так что, может быть, я что-то упустил, пожалуйста, если вы можете указать мне правильное направление?

1 Ответ

0 голосов
/ 12 января 2020

Скорее всего, этот прерывистый сбой может быть из-за медленного ответа от вашего внутреннего PYPI_REPO. Чтобы подтвердить это, вы можете использовать опцию -v в вашей команде pip install, чтобы увеличить детализацию вывода pip. Затем вы можете проанализировать вывод pip, чтобы проверить, где происходит сбой.

Вы также можете установить большее значение тайм-аута, используя опцию --timeout 60 в вашей команде pip. Значение времени ожидания по умолчанию составляет 15 секунд. Это значение тайм-аута также можно установить через файл конфигурации pip (% VIRTUAL_ENV% \ pip.ini).

[global]
timeout = 60
...