【问题标题】:Intermittent pip install error in virtualenv?virtualenv中的间歇性pip安装错误?
【发布时间】:2020-01-12 17:58:20
【问题描述】:

对于以下命令:

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. 然后在其他时候,安装 credstash 会失败:

    找不到满足要求 boto3>=1.1.1 的版本(来自 credstash==1.14.0)(来自版本:) 没有找到 boto3>=1.1.1 的匹配分布(来自 credstash==1.14.0)

什么时候失败,什么时候成功,我都找不到原因。

请注意,上面的命令来自一个 xxx.sh 文件,该文件作为 EC2 UserData 脚本的一部分运行 - 它在 EC2 启动期间几乎可以运行 90%。

但是,当我手动运行 xxx.sh 时,它的工作时间为 10%(在安装 credstash 后,sh 运行 ansible playbook - 因此手动运行是测试 playbook 的更快方法) 在 EC2 实例上进行 SSH 时 - 错误在我上面提到的 2 条错误消息之间切换。我不是 python 开发人员,所以它可能是我缺少的东西,如果你能指出正确的方向吗?

【问题讨论】:

    标签: python amazon-ec2 pip virtualenv credstash


    【解决方案1】:

    这种间歇性故障很可能是由于您的内部 PYPI_REPO 响应缓慢。要确认它,您可以在 pip install 命令中使用 -v 选项,以增加 pip 输出的详细程度。然后您可以分析 pip 输出以检查故障发生的位置。

    您还可以在 pip 命令中使用 --timeout 60 选项设置更大的超时值。默认超时值为 15 秒。此超时值也可以通过 pip 配置文件 (%VIRTUAL_ENV%\pip.ini) 设置。

    [global]
    timeout = 60
    

    【讨论】:

    • 谢谢,这似乎是正在发生的事情,因为错误不再出现。这些错误是在周六和周日周末遇到的,但现在是周一,到目前为止我还没有遇到错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2021-04-20
    • 2016-02-11
    • 2019-02-03
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多