从父文件夹问题导入功能

时间:2017-05-04 15:55:57

标签: python python-3.x

我有这样的文件夹结构:

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。

1 个答案:

答案 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