2013-04-20 54 views
0
~/ 
    A/ 
     __init__.py 
     a1.py 
     a2.py 

a1.py:python中這兩種導入語法有什麼區別?

from a2 import y 

a2.py

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" 

爲什麼上面的導入表達式會拋出異常?

我得到這個例外在Django,其中A是一個應用程序文件夾,所以它已經在PYTHONPATH, 我有添加我的工作目錄到我的測試我的代碼

+1

不知道你在做什麼錯在這裏,但'從一個進口a1'不會在這裏提出一個錯誤。 – 2013-04-20 10:43:52

+2

我們可以有異常追溯? – ubik 2013-04-20 10:47:49

+0

這不是一個循環導入問題嗎? 'a1'從'a2'輸入內容,但'a2'嘗試輸入'a1'。 – Bakuriu 2013-04-20 11:46:35

回答

0

from A import a1仍是A文件夾內。 a2.py會預期它是/A/A/a1.py

Eclipse會拋出錯誤; unresolved import a2,因爲它不在文件的絕對路徑中。

+1

不一定,它取決於OP是否將父目錄添加到他的Python路徑中。絕對導入應該可以正常工作。 – ubik 2013-04-20 10:51:46

+0

我已經將A的父目錄添加到sys.path – shellfly 2013-04-20 11:08:47