Intellij idea 无法识别 python 3 中本地类的导入 [重复]

Posted

技术标签:

【中文标题】Intellij idea 无法识别 python 3 中本地类的导入 [重复]【英文标题】:Intellij idea won't recognize import of local class in python 3 [duplicate] 【发布时间】:2015-07-28 19:34:44 【问题描述】:

我有一个 python3 脚本 script.py,我想在其中实例化一个在 clazz.py 中定义的类 Foobar。但是,当我尝试导入时,我得到:

$ python3 script.py
...
SystemError: Parent module '' not loaded, cannot perform relative import

这是我的文件结构:

python_import/
├── __init__.py
├── clazz.py
└── script.py

clazz.py:

class Foobar():
    def __init__(self):
        print("initialized a foobar")

脚本.py:

from .clazz import Foobar
foobar = Foobar()

如果我去掉import 中的.,它运行良好;但是,如果我这样做,我的 IDE (Intellij IDEA) 会在导入中添加红色下划线,并且不会自动完成任何内容。我相信在 python3 中包含 . 是正确的,而且 Intellij 似乎很喜欢它,那么为什么我的程序除非我删除它才能运行?

我已阅读 http://www.diveintopython3.net/porting-code-to-python-3-with-2to3.html#import、http://python.readthedocs.org/en/latest/reference/import.html、How to import the class within the same directory or sub directory?、Relative imports in Python 3 和 Relative import in Python 3 not working。

我怀疑它可能与 virtualenv 有关,但是 a)我不明白为什么工作目录不会成为 PYTHONPATH 的一部分,并且 b)我不确定如何在 virtualenv 中更改它 - Intellij 为我设置了它。

【问题讨论】:

【参考方案1】:

你的 IDE 喜欢 . 的原因是它知道你的脚本在包 python_import/ 中,但是当你通过命令行运行它时,解释器对包一无所知,所以相对导入不起作用。

为了消除“未解析引用”的红线错误,请参阅Unresolved reference issue in PyCharm,它有完美的一步一步的说明。

【讨论】:

以上是关于Intellij idea 无法识别 python 3 中本地类的导入 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 无法正确识别 Module

IntelliJ idea 无法识别web项目,导致项目启动失败

Lombok 添加但在 Intellij IDEA 中无法识别 getter 和 setter

Intellij IDEA 无法识别 Maven 依赖项中指定的类

Intellij IDEA 无法识别 Maven 依赖项中指定的类

为什么Intellij IDEA突然无法识别测试文件夹中的测试?