从其他文件导入类时,PyCharm未解析引用

时间:2015-04-04 22:22:48

标签: python pycharm

这个问题让我疯狂。我试图从同一目录中的文件导入一个类。 PyCharm给了我“未解决的参考”错误。 MyClass中定义了file.py

Unresolved reference

我发现了这些问题:

我有以下项目结构:

Project structure

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

我设置了“将源根添加到PYTHONPATH”:

Add sources option

我试过File - >无效缓存/重新启动..(我甚至重新启动了计算机)。

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

解释器是Ubuntu x64 14.04上Python 3.4的虚拟版。

如果我安装并导入任何第三方软件包,它们都能正常运行。

如果我在终端中尝试echo $PYTHONPATH,它将不返回任何内容(与env | grep PYTHONPATH相同。)当我尝试使用时,我有相应的virtualenv处于活动状态。

任何线索?

6 个答案:

答案 0 :(得分:15)

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

from pack.file import MyClass

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

答案 1 :(得分:4)

如果您使用的是python版本3,请尝试此操作 来自.pack import myclass,为我工作

答案 2 :(得分:1)

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

from .pack import MyClass

它会起作用

答案 3 :(得分:0)

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

  • 所有目录至少需要一个空白的__init__.py文件
  • 将所有目录标记为源根(按照先前的张贴说明)

答案 4 :(得分:0)

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

@kaylebs的回复对我有用。但是,然后我将src目录添加到了源目录列表中,这是@lulian问题中的第一个链接,并且可以删除“。”。从我的文件名开始。

答案 5 :(得分:0)

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

.idea 缓存问题

某些 .idea 问题导致 IDE 显示错误,但代码仍能正常运行。解决方案:

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

相对于项目文件夹导入

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

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

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

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

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

enter image description here