2016-03-03 21 views
0

我有一個Flask應用程序,用於部署爲wsgi。我有一個問題,當我想從Python解釋器加載文件。從解釋器訪問Flask wsgi結構化應用程序

結構爲:

|----api 
|---------api 
|--------------static 
|--------------templates 
|--------------venv 
|--------------models.py 
|--------------... 

因此,在Python解釋器,當我在目錄 api/api我需要訪問他們爲dir.filename加載文件。例如,如果我有一個文件,api/api/models.py,我可以通過輸入命令from api.mb_models import db ...來加載它,但是,當我通過Web服務器運行wsgi應用程序時,此語法會窒息。然後我得到一個錯誤,該文件不會退出:

Traceback (most recent call last): File "api/extract.py", line 15, in <module> import api.models as models ImportError: No module named api.models

我也嘗試設置OS變量,如下所示,

path = 'api' 
os.chdir(path) 

,雖然這現在作爲WSGI,我得到了相同的嘗試從解釋器加載時出錯。我可以把它當作wsgi運行的唯一方法是沒有在我的導入語句或使用os屬性中指定路徑,當我在解釋器中加載文件時這不起作用

問題是如何共享與wsgi應用程序相同的配置以及從Python解釋器運行的相同配置。

注意:我正在使用虛擬環境。

編輯

我刪除的dir所有引用我的文件導入,從而期望的WSGI應用程序是否正常工作,然後在翻譯中,這給了我的/Users/gms/development/python/api預期的結果跑了os.cwd()。然後我使用os.chdir('/Users/gms/development/python/api/api')設置工作目錄,運行os.cwd()並獲得了工作目錄的所需結果,但是當我嘗試從解釋器加載時,仍然收到ImportError: No module named extract

回答

0

我想通了。我需要在翻譯設置這些:

import sys 
sys.path.append('working path here') 

而且,瞧,一切都按需要工作。

相關問題