我有以下文件夹结构和文件内容的项目:链进口在Python 2工作,但不能在Python 3
├── 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'
如果我运行moduleB.py
(一说显然是导致问题)自身与Python 3,它在运行时问题。
Python 2与Python 3中链式导入的不同行为背后有什么原理,以及如何通过代码或项目结构中的最小更改来克服差异?
我已经得到'父模块''没有加载,不能执行相对导入'加入点并再次运行scriptB.py。我究竟做错了什么? –
对不起,您需要使用'from。在'moduleB.py'中导入moduleA'。 –
是的,它不工作。你能否纠正你的答案,我可以接受它,而不会感到困惑? –