我有以下目录结构:
pkg/
sub1.py
sub2.py
从 withing sub1.py 我可以成功地导入 sub2 with:import pkg.sub2
或使用相对导入,from . import sub2
但我认为以下相对导入:import .sub2
应该也可以,但事实并非如此。我得到一个SyntaxError: invalid syntax
为什么这不起作用?
我有以下目录结构:
pkg/
sub1.py
sub2.py
从 withing sub1.py 我可以成功地导入 sub2 with:import pkg.sub2
或使用相对导入,from . import sub2
但我认为以下相对导入:import .sub2
应该也可以,但事实并非如此。我得到一个SyntaxError: invalid syntax
为什么这不起作用?
import
不采用.
this is invalid 语法。
在相对导入中始终使用from
关键字!总是!如果您想单独使用,import
那么这将是一个abs import
. 只需使用:
import sub2
一般来说,相对进口是有风险的,尽量减少这种进口的使用。
在您的情况下,如果您想以sub2.py
相对方式导入模块:python中的正确方法是:
from . import sub2
正如你第一次输入。
再举一个使用相对进口的例子。你没有问,但我发现附上这个例子是正确的:
pkg/
sub1.py
sub2.py
pkg2/
foo.py
假设我在 foo.py 中,我想从 sub1.py 导入,class clsTemp
那么以相对方式导入此类的正确方法:
from ..sub1 import clsTemp