2017-09-27 52 views
0

無法繞過此導入錯誤。所以,我有以下結構:導入錯誤:無法導入名稱<class>

  • 世界:
    • 世界:
      • __init__.py
      • 歐洲:
        • __init__.py
        • file1.py
        • file2。 PY

file2.py有4個班, 「德國」, 「法國」, 「意大利」, 「西班牙」。 file1.py的內容有以下進口:

from World.Europe.file2 import Germany, France, Italy, Spain 

然而,這將導致以下回溯:

Traceback (most recent call last): 
    File "<path>/file1.py", line 1, in <module> . 
    from World.Europe.file2 import Germany, France, Italy, Spain 
ImportError: cannot import name Spain 

爲什麼我面對的進口誤差只有4類1任何線索?

+1

,因爲它是在同一個目錄,使用'從.file2進口*' – Fabricator

+0

導致回溯: ValueError:試圖在非包中進行相對導入。 此外,這仍然不回答爲什麼導入前3班,但不是第4個問題。 – aaron02

+0

你怎麼知道這只是四個班級中的一個?它執行導入的順序是什麼?錯誤消息中只有一個名稱並不意味着其他三個名稱都是成功的。 –

回答

-1

由於文件1和文件2是在同一水平上

嘗試

從file2的進口德國,法國,意大利,西班牙

+0

這是錯誤的。它們是file2中的類,所以它們與file1不在同一級別。 – aaron02

+0

有多種寫入導入語句的方法。這將如何解釋爲什麼OP代碼不起作用? –

+0

它應該是'from .file2 import ...'。第二種形式(依賴於相對導入行爲,雖然它仍然是錯誤的,因爲它在file2.py中)在較新的Python版本中不再受支持 - 它們引起太多的麻煩。你必須使用第一種形式。您可以在[PEP-328](https://www.python.org/dev/peps/pep-0328/)中查看基本原理。 – jszakmeister

相關問題