PyCharm:ImportError 没有名为 X 的模块?

Posted

技术标签:

【中文标题】PyCharm:ImportError 没有名为 X 的模块?【英文标题】:PyCharm: ImportError no module named X? 【发布时间】:2019-06-07 10:43:40 【问题描述】:

X 在此示例中代表您安装的任何模块或包。

问题

我对名为 'X' 的包有疑问。 在 PyCharm 中,我收到一个错误 ImportError: No module named 'X'. 我的代码从终端运行没有任何问题。有什么帮助吗?

我用 pip 在 python3.4 上安装了 X。在终端中,当我导入 X 时,一切都很好,但是当我在 PyCharm 中导入它时,它会显示:ImportError: No module named 'X'"。有什么帮助吗?


这基本上是日常问题,只是用不同的模块或包代替名称而不是 X

在您安装的包或模块中没有问题,它在您当前用于项目的 PyCharm 项目解释器中。

以下答案通常是针对这个特定问题的解决方案。

【问题讨论】:

【参考方案1】:

短版:

如果您在导入的模块下方有波浪线...

...移动模块名称并按Alt+Enter并选择Install package X

这应该(可能 !!!)安装您认为已安装的模块,但得到了ImportError


更长:

如果你想使用模块X

转到File -> Settings -> Project:NameOfProject -> Project Interpreter

打开的窗口有一些特定区域:

    这是 PyCharm 当前使用的项目解释器。您也可以在此处更改您的 python 环境。如果要添加手动创建的虚拟环境,请继续阅读。 小"cog""gear" 用于添加、编辑或删除 环境。如果您想添加手动创建的虚拟环境,请在单击齿轮图标时选择Add...,并确保将正确的路径设置为您的虚拟环境的python.exe重要提示:所有已安装包的列表,由包名称版本表示。如果您尝试使用包,但得到了ImportError no module named 'X'请务必检查包是否在此处列出!!!。如果没有,说明当前python环境中没有安装,应该安装(继续阅读)。

    一点+代表Install。它可用于安装软件包。只需点击+符号,搜索一个包,找到后点击底部的Install Package。您还可以指定所需的软件包版本。在下面的示例中,我们搜索了flask 包。

    现在应该安装一个包并将其列在已安装的包中。

【讨论】:

【参考方案2】:

PyCharm 使用自己的 Python 解释器为您的项目创建一个虚拟环境,您需要为您正在使用的解释器安装模块。为此,请转到 Settings -> Project: yourProjectName -> Python Interpreter,单击加号图标并选择您要安装的模块。 或者,您可以强制 PyCharm 使用您的其他解释器,方法是从我之前提到的 Python 解释器设置页面顶部的下拉列表中选择它。

【讨论】:

【参考方案3】:

这有很多原因。 我要在这里提出的原因和解决方法是非常罕见,只是决定提出它,希望至少有一个人可以从这个答案中获得帮助。

问题

PyCharm 将 __init__.py 视为非 python 文件。

当您忘记在 您的代码的 __init__.py 文件中使用 .py 扩展名,然后您稍后添加扩展名时,就会发生这种情况。然后 pycharm 开始将所有 __init__.py 文件(甚至外部库文件)视为非 python。有多奇怪?

检测是否是这个问题

滚动单击库名称(不是模块名称)。

或右击并转到Declaration or Usages

您将看到库的 __init__.py 为纯文本。

如果您将代码视为纯文本,那就是问题所在!

解决方案

在 pycharm 导航中查找文件位置。如果使用虚拟环境,文件填写venv/lib/site-packages/library_name

右击__init__.py,点击覆盖文件类型。选择python。

你会看到错误消失了!

【讨论】:

以上是关于PyCharm:ImportError 没有名为 X 的模块?的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:尝试安装软件包时没有名为 pip 的模块

为啥 ImportError:没有名为 lightgbm 的模块

ImportError:没有名为瓶子的模块

ImportError:没有名为枚举的模块

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

ImportError:没有名为 websocket 的模块