我有一個python3腳本script.py,並且在其中我想實例化一個在clazz.py中定義的類Foobar。然而,當我嘗試導入,我得到:Intellij的想法將無法識別python中的本地類的導入3
$ 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")
script.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爲我設置了它。