2016-03-24 78 views
2

我在這裏有一個奇怪的錯誤。 Python無法導入模塊,即使我清楚地看到它在那裏。這也不是一個有許多路徑的複雜環境,而只是一個小項目。Python在「導入」(最小項目,沒有外部導入)上找不到模塊

我跑test.py。它導入模塊stencils。在加載期間,調用stencils/__init.py__。該文件無法找到模塊Stencil,它是stencils/Stencil.py

此外:

  • 運行stencils/__init__.py直接:作品。
  • 運行stencils/Abc.py:Works。
  • 運行test.py:給出錯誤:
Traceback (most recent call last): File "/Users/mi/stencilcodegen/test.py", line 1, in <module> 
import stencils File "/Users/mi/stencilcodegen/stencils/__init__.py", line 1, in <module> 
import Stencil ImportError: No module named 'Stencil' 

__init__.py:

import Stencil 
import Abc 

Abc.py:

import Stencil 
stencil = Stencil.Stencil 

Stencil.py:(大概是無關緊要的,因爲它沒有找到該模塊在所有。)

class Stencil: 
    def __init__(self): 
     a = 1; 

test.py:

import stencils 
a = stencil.Stencil 

目錄的截圖(PyCharm)

enter image description here

+0

不應該是stencils.Stencil? – cafebabe1991

+0

可能存在後續錯誤,但目前的問題是它找到並調用'stencils/__ init.py__',但是這個文件沒有找到一個名爲'Stencil'的模塊。 – Michael

回答

1

我有類似的問題,我發現巧合的解決方案。

test.py文件是「根」,所以,當你使用任何代碼,然後您就可以看到從這個角度hieracy。您必須在子文件夾中的文件導入這樣的:

在__init_.py

例如:

import stencils.Stencil as Stencil 
import stencils.Abc as Abc 

既然要導入的模塊和功能,無論是文件夾stencils中,你還必須給出明確的路徑的功能或任何存儲的地方。對不起,我的表情很糟糕,我是德國人。

+0

重命名而不實際重命名是不必要的重複名稱:'從模具導入Abc,Stencil'。 – BlackJack