2016-03-03 17 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') 

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

相关问题