在摆弄Python导入系统时,我注意到这种形式的绝对导入在python3.6.8中运行良好,但在python2.7.17中抛出ImportError
。包结构如下:
├── main8.py
├── pkg_a
│ ├── __init__.py
│ ├── mod7.py
│ ├── pkg_c
│ │ ├── __init__.py
│ │ ├── mod2.py
main8.py
import pkg_a.mod7
包装a/mod7.py
import pkg_a.pkg_c.mod2
包a/包c/mod2.py
print('Imported pkg_a.pkg_c.mod2')
如果我用Python3执行main8.py
,那么pkg_a.pkg_c.mod2
就会成功导入。你知道吗
$ python3 main8.py
Imported pkg_a.pkg_c.mod2
但是,如果我用Python2执行main8.py
,它会抛出一个ImportError
。你知道吗
$ python2 main8.py
Traceback (most recent call last):
File "main8.py", line 1, in <module>
import pkg_a.mod7
File "pkg_a/mod7.py", line 1, in <module>
import pkg_a.pkg_c.mod2
ImportError: No module named pkg_c.mod2
在main8.py
和pkg_a/mod7.py
的顶部添加from __future__ import absolute_import
指令没有帮助。有人能解释一下为什么Python2导入会这样吗?你知道吗
对于Python2,需要在
__init__.py
旁边有一个main8.py
来生成包:跑步:
相关问题 更多 >
编程相关推荐