virtualenv 中的间歇性 pip 安装错误?
Intermittent pip install error in virtualenv?
对于以下命令:
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
这有时会成功。
但有时会在安装 argparse 时失败:
找不到满足 argparse==1.4.0 要求的版本(来自版本:)
找不到 argparse==1.4.0
的匹配分布
然后其他时候会安装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 运行s 是一个 ansible 剧本- 因此在 EC2 实例上进行 SSH 连接时,手动 运行ning 是测试剧本的更快方法) - 错误在我上面提到的 2 条错误消息之间切换。我不是 python 开发人员,所以这可能是我遗漏的东西,请问您能否指出正确的方向?
这种间歇性故障很可能是由于您的内部 PYPI_REPO 响应缓慢所致。要确认它,您可以在 pip 安装命令中使用 -v
选项,以增加 pip 输出的详细程度。然后您可以分析 pip 输出以检查发生故障的位置。
您还可以在 pip 命令中使用 --timeout 60
选项设置更大的超时值。默认超时值为 15 秒。这个超时值也可以通过 pip 配置文件设置 (%VIRTUAL_ENV%\pip.ini).
[global]
timeout = 60
对于以下命令:
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
这有时会成功。
但有时会在安装 argparse 时失败:
找不到满足 argparse==1.4.0 要求的版本(来自版本:) 找不到 argparse==1.4.0
的匹配分布
然后其他时候会安装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 运行s 是一个 ansible 剧本- 因此在 EC2 实例上进行 SSH 连接时,手动 运行ning 是测试剧本的更快方法) - 错误在我上面提到的 2 条错误消息之间切换。我不是 python 开发人员,所以这可能是我遗漏的东西,请问您能否指出正确的方向?
这种间歇性故障很可能是由于您的内部 PYPI_REPO 响应缓慢所致。要确认它,您可以在 pip 安装命令中使用 -v
选项,以增加 pip 输出的详细程度。然后您可以分析 pip 输出以检查发生故障的位置。
您还可以在 pip 命令中使用 --timeout 60
选项设置更大的超时值。默认超时值为 15 秒。这个超时值也可以通过 pip 配置文件设置 (%VIRTUAL_ENV%\pip.ini).
[global]
timeout = 60