ImportError:没有名为“ yaml”的模块

Nee*_*raj 10 python pip pyyaml python-3.x

我正在尝试执行一个脚本

python3 env/common_config/add_imagepullsecret.py
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

 [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]#
Run Code Online (Sandbox Code Playgroud)

PyYAML已经安装在机器中:

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

如何获取此脚本以导入PyYAML?

小智 12

如果使用conda,您可以:

 conda install -c anaconda pyyaml 

Run Code Online (Sandbox Code Playgroud)


小智 9

开发人员的最佳实践是为他们创建的每个项目创建一个 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
Run Code Online (Sandbox Code Playgroud)

之后,您将能够看到一个文本文档,其中包含您在 virtualenv 中安装的所有依赖项。

干杯:)


小智 9

pip install pyyaml
Run Code Online (Sandbox Code Playgroud)

这应该达到目的

  • 如果其他人遇到“找不到命令'pip'”的问题 - 我必须将其修改为 pip3 install pyyaml (2认同)

Wak*_*eng 7

解决方案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
Run Code Online (Sandbox Code Playgroud)

解决方案2:使用virtualenv

pip3 install virtualenv
virtualenv --python=python3 venv
source venv/bin/activate
pip install pyyaml
python env/common_config/add_imagepullsecret.py
Run Code Online (Sandbox Code Playgroud)

解决方案3:使用Pipenv

https://docs.pipenv.org/


Ant*_*hon 6

这里的问题是由于您已经在一台由包管理器安装了旧版本的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
Run Code Online (Sandbox Code Playgroud)

一切应该可以正常工作,除非您依赖于较新版本的某些功能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
Run Code Online (Sandbox Code Playgroud)

运行你的程序。通过一些支持脚本/函数/别名/链接,可以非常有效地完成此操作,而不会污染系统python3`“安装空间”或您的路径。


小智 6

尝试以下操作:
1. 卸载 python-yaml 及其依赖项。

$ sudo apt-get remove python3-yaml
$ sudo apt-get remove --auto-remove python3-yaml
Run Code Online (Sandbox Code Playgroud)

也清除您的配置/数据。

$ sudo apt-get purge python3-yaml
$ sudo apt-get purge --auto-remove python3-yaml
Run Code Online (Sandbox Code Playgroud)
  1. 安装pyyaml

    $ sudo pip3 安装 pyyaml

这对我有用。