我有这样的文件夹结构:
d1
- app
— script.py
- lib
— lib1
— file.py
当我from ..lib.lib1 import my func
script.py
时,它会出错:
SystemError: Parent module '' not loaded, cannot perform relative import
我使用的是Python 3。
答案 0 :(得分:0)
相对导入用于包中。您可以通过在目录结构中添加一些空的__init__.py
文件来改变您所拥有的内容,如下所示:
d1
- test.py # added to run script.py below
- app
- __init__.py # an empty script
— script.py
- lib
- __init__.py # an empty script
— lib1
- __init__.py # an empty script
— file.py
还有一个我称为test.py
的新文件,因为你通常无法在程序包中运行模块作为主脚本(这就是我添加test.py
的原因)。它包含的全部是:
from app import script
我还将script.py
中的导入更改为:
from lib.lib1 import file
为了表明上述import
有效,我在print('in file.py')
中添加了file.py
。
现在运行test.py
,通过导入运行script
模块,会产生以下输出:
in file.py
现在,如果您要从file.py
导入特定功能,可以在script.py
中执行以下操作:
from lib.lib1.file import my_func