PyCharm 从其他文件导入 class 时未解析的引用

PyCharm unresolved reference when importing class from other file

这个问题一直让我抓狂。我正在尝试从同一目录中的文件导入 class。 PyCharm 给我 "Unresolved reference" 错误。 MyClass 定义在 file.py.

我发现了这些问题:

我有以下项目结构:

我已将 src 标记为源根...

我设置了"Add source roots to PYTHONPATH":

我试过文件 -> 使缓存无效/重新启动..(我什至重新启动了计算机)。

如果我尝试 运行 它,我会在控制台中收到以下错误:ImportError: cannot import name 'MyClass'

解释器是 Python 3.4 上 Ubuntu x64 14.04 上的 virtualenv。

如果我安装并导入任何第 3 方软件包,它们都可以正常工作。

如果我在终端中尝试 echo $PYTHONPATH 它 returns 什么都没有(与 env | grep PYTHONPATH 相同)。当我尝试这些时,我激活了适当的 virtualenv。

有什么线索吗?

如果在pack/file.py中定义了MyClass,则需要将其导入为:

from pack.file import MyClass

请注意,为您自己的模块使用 Python 内置类型的名称(例如 file)不是一个好主意。

如果您使用的是 python 版本 3,试试这个

from .pack import myclass

这对我有用

是的,如果您使用的是 python 3,您应该添加如下内容:

from .pack import MyClass

它会起作用

以下步骤解决了我的问题:

  • 所有目录至少需要一个空白__init__.py文件
  • 将所有目录标记为源根目录(根据之前的海报说明)

我在尝试导入新的 class 时遇到了同样的问题,但是我可以从同一目录中的文件成功导入函数。我仍然不明白为什么我不能导入我的 class 但我想我会为其他用户分享信息。

@kaylebs 的回复对我有用。但是我随后将 src 目录添加到源目录列表中,首先是@lulian 's question and could remove the ' 中的 link。'来自我的文件名。

发生这种情况的原因有多种。以下是修复大多数情况的几个步骤:

.idea 缓存问题

一些 .idea 问题导致 IDE 在代码仍然正确运行时显示错误。解决方案:

  1. 关闭项目并快速PyCharm
  2. 删除项目所在的.idea文件夹。请注意,它是一个隐藏文件夹,您可能不知道它在您的项目目录中的存在。
  3. 启动 PyCharm 并重新创建项目

导入相对项目文件夹

相对导入,而代码根文件夹与项目文件夹不同。解决方案:

  1. 在项目资源管理器中找到相对导入需要的文件夹
  2. 右键单击并将其标记为“Source Root”

编辑器未将 init.py 标记为 Python

这是所有案例中最虚幻的一个。这里,出于某种原因,PyCharm 认为所有 __init__.py 文件都不是 python 文件,因此在代码分析期间忽略它们。要解决此问题:

  1. 打开PyCharm设置
  2. 导航到编辑器 -> 文件类型
  3. 查找 Python 并将 __init__.py 添加到 python 文件列表或查找文本并从文本文件列表中删除 __init__.py

我只是删除了复制的代码并删除了文件,然后再次创建相同的文件,到时候就可以了