0

对于以下命令:

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%。

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

4

1 回答 1

0

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

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

[global]
timeout = 60
于 2020-01-12T09:58:20.137 回答