1
我有如下所示(可视化使用tree)目录树:在Python从“子子目录”导入模块3
.
├── __init__.py
└── testsubdir
├── __init__.py
└── testsubsubdir
├── __init__.py
└── __init__.pyc
的在主目录__init__.py
包含命令import testsubdir
testsubdir
中的__init__.py
包含import testsubsubdir
。我注意到的是,这部作品在Python 2.7,但不是在Python 3.5:
[email protected]:~/Documents/Scratch/testdir$ python __init__.py
[email protected]:~/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包含类似于上述import语句。在Python 3中完成这项工作的最佳方式是什么?
这是否对你的工作?我得到'ValueError:尝试相对导入非包'的行'from。导入testsubdir'。 –
@KurtPeek我通过在包'testdir'中放置顶层'__init __。py'并执行'import testdir'来测试。 – Leon
@KurtPeek如果你想直接向python3提供顶级'__init __。py',那么在'import testsubdir'中保留'import'语句。 – Leon