当我尝试使用其pip模块安装Ansible
的python包时,我正面临一些有趣的伏都教。
这里...... 如果我试试这个:
$ sudo pip install sh
sh
软件包安装成功,完全没有错误。
那是件好事。
我将撤消这个:
$ sudo pip uninstall sh
接下来我将尝试使用Ansible
:
$ ansible smith pip -a 'name=sh state=present extra_args="-i http://host:port/simple"' -i inventory
这失败了。错误信息如下(原谅我,但我在没有互联网访问的防火墙下工作,所以我不得不输入它。我过滤了我认为不必要的东西 - 如果还有什么东西丢失告诉我,我会更新我的问题):
smith | FAILED >> {
"cmd" "/usr/local/bin/pip install -i http://host:port/simple sh",
...
msg: stdout: Collecting sh
Downloading http://host:port/packages/sh-1.09.tar.gz
...
running install
running build
running build_py
creating build
creating build/lib.linux-i686-2.7
copying sh.py -> build/lib.linux-i686-2.7
running install_lib
copying buikd/lib.linux-i686-2.7/sh.py -> /usr/local/lib/python2.7/dist-packages
error: /usr/local/lib/python2.7/dist-packages/sh.py: Permission denied
---------
:stderr: Command "/usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-zH3cTB/sh/setup.py' ... -- compile: failed with error code 1 in /tmp/pip-build-zH3cTB/sh
当然,我添加到最后一个命令--sudo
:
$ ansible smith -m pip -a 'name=sh state=present extra_args="-i http://host:port/simple"' -i inventory --sudo
这次我无言以对。它又失败了:
smith | FAILED >> {
"cmd" "/usr/local/bin/pip install -i http://host:port/simple sh",
...
msg: stdout: Collecting sh
Could not find a version that satisfied the requirement (from versions: ) No matching distribution found for sh
非常奇怪。 这适用于我尝试安装的所有python包。
其他信息:
我们有一个pypi服务器,我们把所有的软件包都安装好了。
它位于host:port/simple
我们也使用这个pip.conf
文件:
[global]
index-url = http://host:port/simple
trusted-host = host
提前感谢所有帮助者。
答案 0 :(得分:2)
好的,我明白发生了什么。
问题是我的pip.conf文件仅供我的用户使用(在/home/user/.pip/pip.conf
下)
我把它移到/etc/pip.conf并解决了问题。
添加到参数--trusted-host host
的替代解决方案
我使用旧版本的pip很长一段时间,当我升级到最新版本时,我忘了更新参数。
干杯!