ImportError: нет модуля с именем 'yaml'

3

У меня есть один сценарий, в котором я пытаюсь выполнить

python3 env/common_config/add_imagepullsecret.py

Но, я получаю следующую ошибку:

 [root@kevin]# python3 env/common_config/add_imagepullsecret.py
 Traceback (most recent call last):
 File "env/common_config/add_imagepullsecret.py", line 4, in <module>
 import yaml
 ImportError: No module named 'yaml'
 [root@kevin]# pip3 install pyyaml
 Requirement already satisfied: pyyaml in /usr/lib64/python3.4/site-packages 
 (3.12)
 [root@kevin]#

PyYAML уже установлен в машине:

 [root@bhimsvm31 k8s]# pip3 install pyyaml
 Requirement already satisfied: pyyaml in /usr/lib64/python3.4/site-packages 
 (3.12)
 [root@bhimsvm31 k8s]#

Как я могу заставить этот скрипт импортировать PyYAML?

Теги:
python-3.x
pip
pyyaml

6 ответов

4

Решение 1: установите python 3.6 и ln python3 на него

export $PYPATH='which python3'
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
tar -Jxf Python-3.6.5.tar.xz
cd Python-3.6.5/
./configure && make && make altinstall
rm $PYPATH
ln -s 'which python3.6' $PYPATH
python3 -m pip install pyyaml
python3 env/common_config/add_imagepullsecret.py

Решение 2: используйте virtualenv

pip3 install virtualenv
virtualenv --python=python3 venv
source venv/bin/activate
pip install pyyaml
python env/common_config/add_imagepullsecret.py

Решение 3: используйте pipenv

https://docs.pipenv.org/

2

Попробуйте следующее:
1. удалить python-yaml и его зависимости.

$ sudo apt-get remove python3-yaml
$ sudo apt-get remove --auto-remove python3-yaml

Очистка вашей конфигурации/данных тоже.

$ sudo apt-get purge python3-yaml
$ sudo apt-get purge --auto-remove python3-yaml
  1. Установить pyyaml

    $ sudo pip3 установить pyyaml

это сработало для меня.

0
pip install pyyaml

Это должно служить цели

0

На тот случай, если ни одно из вышеперечисленных решений не подойдет вам, вот постоянное решение. скачать подходящую версию pyyaml, распаковать и установить.

Пример:

wget https://pyyaml.org/download/pyyaml/PyYAML-5.1.tar.gz
tar -xvzf PyYAML-5.1.tar.gz
cd PyYAML-5.1
sudo setup.py install

Примечание. Можно загрузить последнюю доступную версию, если вы не уверены в конкретной версии.

0

Проблема здесь связана с тем, что вы загрузили, скомпилировали и установили (более новую) версию python3 на машине с более старым python3 установленной менеджером пакетов. Последний имеет и связан с pip3 у первого нет. Вы можете проверить это, выполнив /usr/local/bin/python3 --version и /usr/bin/python3 --version

Из-за этого, что происходит, когда вы делаете pip3 install pyyaml, нужно добавить пакет PyYAML к старому Python3. Когда вы выполните:

/usr/bin/python3 env/common_config/add_imagepullsecret.py

все должно работать, если вы не полагаетесь на какую-либо особенность нового python3.

Более структурное решение - установить pip для нового python3 и использовать его для установки PyYAML.

Более структурное решение - никогда не устанавливать такой дополнительный python3 в ваш путь, но, например, в /opt/python/3.7.0, используйте virtualenv -p/opt/python/3.7.0/bin/python/opt/util/yourutil, установите каждый пакет с помощью /opt/util/yourutil/bin/pip3 install package_name и затем выполните:

/opt/util/yourutil/bin/python env/common_config/add_imagepullsecret.py

для запуска вашей программы. С помощью нескольких поддерживающих скриптов/функций/псевдонимов/ссылок это можно сделать очень эффективно, не загрязняя систему python3 '"установить пространство", ни ваш PATH.

0

Лучшей практикой разработчика является создание virtualenv для каждого проекта, который он создает. Это помогает вам поддерживать зависимости, изолированные от корневой конфигурации системы

Установка virtualenv

cd /*desired*/
mkdir myProject
pip install virtualenv -p python3 . #For python 3
pip install virtualenv -p python2 . #For python 2
pip install pyyaml

pip freeze > requirements.txt

После этого вы сможете увидеть текстовый документ, содержащий все зависимости, которые вы установили в virtualenv.

Приветствия :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню