Проблемы с установкой пакетов python с модулем Ansible pip


Я сталкиваюсь с некоторыми интересными вуду, когда пытаюсь установить пакеты python с Ansible, используя его модуль pip.

Вот так... Если я попробую это:

$ 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
Заранее благодарю всех помощников.
1 2

1 ответ:

Хорошо, я понял, что происходит.

Проблема была в том, что мой Пип.conf файл был только для моего пользователя (под /home/user/.pip/pip.conf)

Я переместил его в /etc / pip.конф и проблема решена.

Альтернативное решение wast, чтобы добавить к аргументам --trusted-host host Я работал со старой версией pip очень долго, и когда я обновился до последней версии, я забыл обновить аргументы.

Ура!