解决错误:ModuleNotFoundError——没有名为'yaml'的模块

1,814 阅读5分钟

在Python中,ModuleNotFoundError。没有名为'yaml'的模块,如果我们在没有安装包的情况下试图导入''模块,就会发生错误。pyyaml'模块,或者没有在正确的环境中安装该模块,就会发生ModuleNotFoundError: No module named 'yaml' 错误。

在本教程中,让我们看看如何在不同的操作系统中正确安装pyyaml模块,并解决 ModuleNotFoundError问题。没有名为 "yaml "的模块的错误

什么是ModuleNotFoundError。没有名为'yaml'的模块?

我们得到ModuleNotFoundError的原因有很多。没有名为'yaml'的模块的错误

  • 试图在没有安装pyyaml 包的情况下使用该模块。
  • 如果IDE设置的Python/Python解释器的版本不正确。
  • 你正在使用虚拟环境,而pyyaml模块没有安装在虚拟环境里面
  • 在与当前使用的Python不同的版本中安装pyyaml包。
  • 将一个变量名声明为模块名(pyyaml)

如何解决ModuleNotFoundError。没有名为'yaml'的模块?

pyyaml不是Python中的内置模块(它不在默认的python安装中出现);你需要使用pip安装程序明确安装它,然后使用它。

YAML 是一种数据序列化格式,是为人类可读性和与脚本语言的交互而设计的。PyYAML是一个用于Python的YAML解析器和发射器。

PyYAML具有完整的YAML 1.1解析器,支持Unicode,支持pickle,能够扩展API,以及合理的错误信息。PyYAML支持标准的YAML标签,并提供了Python特定的标签,允许代表一个任意的Python对象。

我们可以通过安装 'pyyaml'模块,在终端/Shell中运行 **pip install pyyaml** 命令来解决这个问题。

我们可以通过在终端/Shell中运行以下命令来验证该软件包是否正确安装。

这将提供所安装软件包的详细信息,包括版本号、许可证和它的安装路径。如果该模块没有安装,你将在终端中得到一个警告信息,说明WARNING: Package(s) not found: pyyaml.

pip show pyyaml

输出

Name: PyYAML
Version: 6.0
Summary: YAML parser and emitter for Python
Home-page: https://pyyaml.org/
Author: Kirill Simonov
Author-email: xi@resolvent.net
License: MIT
Location: c:\personal\ijs\python_samples\venv\lib\site-packages
Requires:
Required-by: Naked

解决方案1 - 以正确的方式安装和使用pyyaml模块

根据你所运行的Python版本和操作系统,运行相关命令来安装 pyyaml 模块。

# If you are using Python 2 (Windows)
pip install pyyaml

# if you are using Python 3 (Windows)
pip3 install pyyaml

# If the pip is not set as environment varibale PATH
python -m pip install pyyaml

# If you are using Python 2 (Linux)
sudo pip install pyyaml

# if you are using Python 3 (Linux)
sudo pip3 install pyyaml

# In case if you have to easy_install
sudo easy_install -U pyyaml

# On Centos
yum install pyyaml

# On Ubuntu
sudo apt-get install pyyaml

# If you are installing it in Anaconda 
conda install -c conda-forge pyyaml

一旦你安装了pyyaml模块,我们现在就可以在我们的代码中导入它并使用它,如下所示。

import yaml
with open('config.yml', 'r') as file:
    config = yaml.safe_load(file)
    print(config)

输出

version: 2.1

# Define the jobs we want to run for this project
jobs:
  build:
    docker:
      - image: cimg/<language>:<version TAG>
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD # context / project UI env-var reference
    steps:
      - checkout
      - run: echo "this is the build job"
 
# Orchestrate our job run sequence
workflows:
  build_and_test:
    jobs:
      - build
      - test:
          requires:
            - build

解决方案2--验证IDE是否被设置为使用正确的Python版本

如果你在安装软件包后仍然得到同样的错误,你可以验证你使用的IDE是否配置了正确的Python解释器版本。

例如:在Visual Studio Code的情况下,我们可以通过以下方式设置Python版本 CTRL + Shift + P或 ( + Shift + P 在Mac上)来打开命令调色板。

一旦命令调色板打开,选择Python解释器并选择正确的Python版本和虚拟环境(如果已配置),如下所示。

image 1

Python 解释器

解决方案3 - 在虚拟环境中安装pyyaml

许多不同的IDE,如Jupyter Notebook、Spyder、Anaconda或PyCharm,经常安装他们自己的Python 虚拟环境,以保持事情的干净,并与你的全局Python分开。

如果你正在使用**VS Code,**那么你也可以创建一个虚拟环境,如下图所示。

在虚拟环境的情况下,你需要确保pyyaml模块需要安装在虚拟环境里面,而不是全局。

步骤1: 创建一个虚拟环境。如果你已经创建了一个虚拟环境,那么继续进行第2步。

第2步:激活虚拟环境

第3步:使用以下命令安装所需的模块 pip install 命令来安装所需的模块。

# Create a virtual Environment
py -3 -m venv venv

# Activate the virtual environment (windows command)
venv\Scripts\activate.bat

# Activate the virtual environment (windows powershell)
venv\Scripts\Activate.ps1

# Activate the virtual environment (Linux)
source venv/bin/activate

# Install pyyaml inside the virtual environment
pip install pyyaml

解决方案4 - 确保模块名称不被声明为变量名称。

最后但并非最不重要的是,你可能需要交叉检查并确保你没有声明一个与模块名称相同的变量。

你应该检查你是否没有把任何文件命名为 yaml.py因为它可能会影响原始 pyyaml模块。

如果问题仍未解决,你可以尝试删除软件包并再次安装,重新启动IDE,并检查路径以确保软件包安装在正确的环境路径和Python版本中。

总结

ModuleNotFoundError:没有名为'yaml'的模块'的错误发生在我们试图导入pyyaml'模块,或者你没有在正确的环境中安装该模块。

我们可以通过运行以下命令安装pyyaml模块来解决这个问题 pip install pyyaml命令来解决这个问题。另外,在你使用任何虚拟环境的情况下,确保该模块安装在正确的环境中,并且在你运行代码的IDE中适当地设置了Python版本。