2015-05-25 46 views
0

在一個網站我與Flask我有結構建築是這樣的:爲什麼我不能從一個python文件導入一個來自現有軟件包的文件?

├── app 
│   ├── __init__.py 
│   ├── models.py 
│   ├── ticket_scanner 
│   │   ├── __init__.py 
│   │   └── filehelper.py 
│   ├── templates 
│   │   └── all the templates are here.. 
│   └── views.py 
└── run.py 

我現在想導入到modelsticket_scanner/__init__.py。我試圖做到這一點使用以下import語句(在他們身後的錯誤):

from .. import models # ImportError: cannot import name models 
from . import models # ImportError: cannot import name models 
import models # ImportError: No module named models 
from ..models import ImageHash # ImportError: cannot import name ImageHash 

正如你可以看到它拒絕從models.py文件導入。我在這些文件中有循環導入,但我不知道它出錯的地方。在此消息下面,我粘貼了第一次嘗試的完整堆棧跟蹤(from .. import models)。

有沒有人知道我在這裏錯了什麼?歡迎所有提示!

Traceback (most recent call last): 
    File "./run.py", line 4, in <module> 
    from app import app 
    File "/Users/kramer65/repos/fts/app/__init__.py", line 16, in <module> 
    import views, models 
    File "/Users/kramer65/repos/fts/app/views.py", line 5, in <module> 
    from models import Ticket 
    File "/Users/kramer65/repos/fts/app/models.py", line 8, in <module> 
    from ticket_scanner import filehelper, pdf as pdf_helper, util 
    File "/Users/kramer65/repos/fts/app/ticket_scanner/__init__.py", line 8, in <module> 
    from .. import models 
ImportError: cannot import name models 
+0

雖然重複建議的措辭不同,根本原因可能是一樣的:你試圖通過導入東西它取決於被定義的東西之前創建一個圓形進口。 – davidism

回答

-1

我不確定像這樣的相對輸入是否有效。但在我的項目中,我將一個簡單的setup.py放在安裝整個項目的頂層目錄中。然後你可以做python setup.py develop並從項目導入。

另外我從來沒有把任何代碼放入__init__.py。我在腳本中導入所有內容。不知道這是否會緩解你的問題。

-1

我想,如果你使用from app import modelsfrom app.models import ImageHash

相關問題