我有一个文件结构,看起来像这样:
Liquid
|
[Truncate]
|_General_parsing
[Truncate]
.....|_'__init__.py'
.....|_'Processer.py'
.....|'TOKENIZER.py'
|_'__init__.py'
|_'errors.py'
[Truncate]
我想从Processer.py
导入errors.py
。这可行吗?我尝试使用以下代码:
from ..errors import *; error_manager = errorMaster()
这会导致这样的结果:
Traceback (most recent call last):
File "/Users/MYNAME/projects/Liquid/General_parsing/Processer.py", line 17, in <module>
from ..errors import *; error_manager = errorMaster()
ImportError: attempted relative import with no known parent package
[Finished in 0.125s]
我看到过这篇文章,但并没有帮助,即使它试图解决相同的ImportError
也无济于事。这篇文章也不是(至少在我编辑前不是),因为我尝试了以下操作:
import sys
sys.path.insert(1, '../Liquid')
from errors import *; error_manager = errorMaster()
这给予了
Traceback (most recent call last):
File "/Users/MYNAME/projects/Liquid/General_parsing/Processer.py", line 19, in <module>
from errors import *; error_manager = errorMaster()
ModuleNotFoundError: No module named 'errors'
[Finished in 0.162s]
编辑:算了!我解决了!我只需要将..
添加到sys.path中即可!或者如果..
无法解决您的问题,可以使用.
。但是,如果这些方法都无法解决您的问题:使用一些pathlib
(从python3.4开始)的魔力,执行以下操作:
from pathlib import Path
import sys
sys.path.insert(0, str(Path(__file__).parent))
或者,如果你想使用os
:(取自这个 StackOverflow 答案)
import os
os.path.join(os.path.dirname(__file__), '..')