什么';python中这两种导入语法的区别是什么?

什么';python中这两种导入语法的区别是什么?,python,Python,a1.py: ~/ A/ __init__.py a1.py a2.py a2.py 这两者之间的区别是什么: import sys sys.path.append('/home/shellfly/') from A import a1 # raise ImportError from A.a1 import c # normal 及 为什么上面的导入表达式会引发异常 我在Django中得到了这个异常,它是一个应用程序文件夹,所以它已

a1.py:

~/
    A/
        __init__.py
        a1.py
        a2.py
a2.py

这两者之间的区别是什么:

import sys
sys.path.append('/home/shellfly/')
from A import a1  # raise ImportError
from A.a1 import c # normal

为什么上面的导入表达式会引发异常

我在Django中得到了这个异常,它是一个应用程序文件夹,所以它已经在PYTHONPATH中了,
我已经将我的工作目录添加到了我的测试中。我的代码仍然在
A
文件夹中
a2.py
将期望它是
/A/A/a1.py


Eclipse抛出错误<代码>未解析的导入a2,因为它不在文件的绝对路径中。

不确定您在这里做错了什么,但是导入a1的
不会在这里引发错误。我们可以进行异常回溯吗?这不是循环导入问题吗
a1
a2
导入某些内容,但
a2
尝试导入
a1
。这不一定取决于OP是否已将父目录添加到其Python路径。绝对导入应该可以正常工作。
import sys
sys.path.append('/home/shellfly/')
from A import a1  # raise ImportError
from A.a1 import c # normal
 from PACKAGE import MODULE
 from MODULE import VAR"