我有一个如下所示的目录树(使用 tree 进行可视化):
.
├── __init__.py
└── testsubdir
├── __init__.py
└── testsubsubdir
├── __init__.py
└── __init__.pyc
主目录中的__init__.py
包含命令import testsubdir
,以及testsubdir
中的__init__.py
code> 包含 import testsubsubdir
。我注意到这在 Python 2.7 中有效,但在 Python 3.5 中无效:
kurt@kurt-ThinkPad:~/Documents/Scratch/testdir$ python __init__.py
kurt@kurt-ThinkPad:~/Documents/Scratch/testdir$ python3 __init__.py
Traceback (most recent call last):
File "__init__.py", line 1, in <module>
import testsubdir
File "/home/kurt/Documents/Scratch/testdir/testsubdir/__init__.py", line 1, in <module>
import testsubsubdir
ImportError: No module named 'testsubsubdir'
我正在努力将一些源代码从 Python 2“翻译”为 Python 3,其中包含与上面类似的导入语句。在 Python 3 中实现此功能的最佳方法是什么?
最佳答案
This answer to a similar question建议使用相对导入:
在顶层__init__.py
:
from . import testsubdir
在testsubdir/__init__.py
中:
from . import testsubsubdir
关于python - 在 Python 3 中从 "sub-sub-directory"导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40421179/