部署应用程序时无法从实例文件夹加载配置文件

Pav*_*dhu 5 python flask

我为我的应用程序设置了一个新的virtualenv,以清理已安装的软件包.我config.py在应用程序的实例文件夹中有一个文件.有两个配置,一个用于'instance'文件夹中的dev,另一个用于根文件夹中的production.该应用程序在旧的环境中工作,但现在我收到一个错误,它无法找到配置文件.为什么我会收到此错误,如何解决?

Traceback (most recent call last):
  File "application.py", line 12, in <module>
    application.config.from_pyfile('config.py')
  File "/Users/pavsidhu/Envs/test/lib/python2.7/site-packages/flask/config.py", line 128, in from_pyfile
    with open(filename) as config_file:
IOError: [Errno 2] Unable to load configuration file (No such file or directory): '/Users/pavsidhu/Envs/test/var/application-instance/config.py'
Run Code Online (Sandbox Code Playgroud)

我的项目结构如下:

/Users/pavsidhu/Envs/test/
    lib/python-3.4/site-packages/
    bin/
    application.py
    static/
    templates/
    instance/
        config.py
Run Code Online (Sandbox Code Playgroud)

dav*_*ism 6

Flask认为您的应用程序已安装在env中,因为您将其放在与env相同的基本目录中.此行为在文档中有详细描述.

已安装的模块或包装:

$PREFIX/lib/python2.X/site-packages/myapp
$PREFIX/var/myapp-instance
Run Code Online (Sandbox Code Playgroud)

$ PREFIX是Python安装的前缀.

Flask希望实例文件夹以var/myapp-instance这种方式安装.(结构不完全相同,但它足以愚弄Flask的检测功能.)

您不应该将项目结构与virtualenv结构混合在一起.将两者分开:

my_env/
    lib/
    bin/
my_project/
    my_app/
        __init__.py
        static/
        templates/
    instance/
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅移至聊天的评论讨论.