【发布时间】:2017-05-18 20:39:33
【问题描述】:
我有一个项目,其文件夹结构和文件内容如下:
├── code
│ ├── my_lib
│ │ ├── __init__.py
│ │ ├── moduleA.py
│ │ └── moduleB.py
│ ├── scriptA.py
│ └── scriptB.py
__init__.py
#empty
moduleA.py
def funA():
print("A")
moduleB.py
import moduleA
moduleA.funA()
def funB():
print("B")
scriptA.py
from my_lib import moduleA
moduleA.funA()
scriptB.py
from my_lib import moduleB
moduleB.funB()
在 Python 2.7 中,我可以成功运行所有四个 Python 文件。但是使用 Python 3.5,我无法运行 scriptB.py,因为它给了我以下错误:
Traceback (most recent call last):
File "scriptB.py", line 1, in <module>
from my_lib import moduleB
File "/home/marjan/Desktop/code/my_lib/moduleB.py", line 1, in <module>
import moduleA
ImportError: No module named 'moduleA'
如果我使用 Python 3 单独运行 moduleB.py(显然是导致问题的那个),它运行没有问题。
在 Python 2 和 Python 3 中链式导入的不同行为背后的原理是什么,我怎样才能在代码或项目结构的最小更改的情况下克服这些差异?
【问题讨论】:
标签: python python-2.7 python-3.x python-import