这个问题让我疯狂。我试图从同一目录中的文件导入一个类。 PyCharm给了我“未解决的参考”错误。 MyClass
中定义了file.py
。
我发现了这些问题:
我有以下项目结构:
我已将src标记为源根...
我设置了“将源根添加到PYTHONPATH”:
我试过File - >无效缓存/重新启动..(我甚至重新启动了计算机)。
如果我尝试运行它,我在控制台中收到以下错误:ImportError: cannot import name 'MyClass'
解释器是Ubuntu x64 14.04上Python 3.4的虚拟版。
如果我安装并导入任何第三方软件包,它们都能正常运行。
如果我在终端中尝试echo $PYTHONPATH
,它将不返回任何内容(与env | grep PYTHONPATH
相同。)当我尝试使用时,我有相应的virtualenv处于活动状态。
任何线索?
答案 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)
以下步骤解决了我的问题:
答案 4 :(得分:0)
当我尝试导入新类时,我遇到了同样的问题,但是我可以成功地从同一目录中的文件中导入函数。我仍然不明白为什么我不能导入我的课程,但以为我会与其他用户共享信息。
@kaylebs的回复对我有用。但是,然后我将src目录添加到了源目录列表中,这是@lulian问题中的第一个链接,并且可以删除“。”。从我的文件名开始。
答案 5 :(得分:0)
发生这种情况的原因有多种。以下是解决大多数情况的几个步骤:
.idea 缓存问题
某些 .idea
问题导致 IDE 显示错误,但代码仍能正常运行。解决方案:
.idea
文件夹。请注意,它是一个隐藏文件夹,您可能不知道它存在于您的项目目录中。相对于项目文件夹导入
相对导入,而代码根文件夹与项目文件夹不同。解决方案:
编辑器未将 init.py 标记为 Python
这是所有案例中最虚幻的。在这里,出于某种原因,PyCharm 认为所有 __init__.py
文件都不是 python 文件,因此在代码分析过程中会忽略它们。要解决此问题:
__init__.py
添加到 Python 文件列表或找到 Text 并从文本文件列表中删除 __init__.py