python3显式相对导入错误

python3显式相对导入错误,python,python-3.x,python-import,python-module,python-packaging,Python,Python 3.x,Python Import,Python Module,Python Packaging,我开始打包我的python代码。 我的包结构是: mypackage/ __init__.py /subpackage __init__.py module1.py module2.py 在我的模块2中,如果我使用绝对导入,如: from mypackage.subpackage import module1 from . import module1 这会奏效的 但是,如果我使用显式导入,例如: from mypackage

我开始打包我的python代码。 我的包结构是:

mypackage/
    __init__.py
    /subpackage
        __init__.py
        module1.py
        module2.py
在我的模块2中,如果我使用绝对导入,如:

from mypackage.subpackage import module1
from . import module1
这会奏效的

但是,如果我使用显式导入,例如:

from mypackage.subpackage import module1
from . import module1
这给了我

ImportError:尝试在没有已知父包的情况下进行相对导入


我在谷歌上搜索了一下,发现隐式相对导入并不好。但是我的导入是显式的,它给了我这样一条错误消息。 有人能帮我理解为什么吗?
谢谢

相对导入只在包内起作用。如果您将
mypackage
作为实际可执行代码(纯库)的需求,并使用显式的相对导入,那么就可以了。但是,如果您试图直接运行
module2
,您的代码会显示

查找
\uuuu main\uuuuu
所在的包,查找其父包,然后查找名为
module1


这显然是无稽之谈,因为
\uuu main\uuuuuuuu
没有父级(根据定义)

运行
python-m mypackage.subpackage.module2
而不是
python mypackage/subpackage/module2.py
相关:检查解决方案。这是否意味着运行代码的目录会有所不同?我确实注意到主管道是空的。