如何使用virtualen运行uwsgi

2024-04-29 05:50:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在开发我的第一个真正的python flask项目,并准备设置构建服务器来部署“最新构建”,它构建在每个签入上。

我已经设置了一个启动脚本,在这里我使用uwsgi启动应用程序,这部分工作正常。我最近也开始使用virtualenv,通过这样做,安装的包被添加到我的项目的projectname\flask\Lib\site-packages下。

我使用nginx作为web服务器,配置如下:

location / { try_files $uri @graderbuild; }
location @graderbuild {
    include uwsgi_params;
    uwsgi_param UWSGI_CHDIR /usr/local/grader/build;
    uwsgi_param UWSGI_PYHOME /usr/local/grader/build;
    uwsgi_pass 127.0.0.1:3031;
}

我开始使用这个:

exec /usr/local/bin/uwsgi --master --socket 127.0.0.1:3031
    --wsgi-file restserver.py --callable app --processes 4 --die-on-term
    --threads 2 >> /var/log/grader-build.log 2>&1

现在我知道如果我做得对。。。目前我正在将整个文件夹部署到生成服务器。我不想安装全局python模块只是为了让构建工作。对还是错?

我当前得到的错误是:

ImportError: No module named flask_wtf

如果我是对的,如何配置安装程序以使用virtualenv站点包?我的首选位置应该在startup脚本中,而不是nginx配置中。


Tags: 项目build服务器脚本flaskvirtualenvparamusr
3条回答

使用-H将virtualenv设置为python路径。

uwsgi -H /path/to/your/virtualenv 

http://uwsgi-docs.readthedocs.org/en/latest/Options.html#virtualenv

作为user995394 pointed输出,有一种方法可以告诉uWSGI使用现有的虚拟环境。 然而,当我以virtualenv = /full/path/to/my/virtualenv(来自in I config)的形式传递uWSGI选项时,它会抱怨ImportError: No module named site。我发现的解决方法是从virtualenv所在的文件夹启动uWSGI,然后只传递virtualenv = my_virtualenv_name(即路径是相对的)。

我使用uWSGI 2.0。

要使用激活的virtualenv,可以在uwsgi.ini中使用此配置片段:

; If VIRTUAL_ENV is set then use its value to specify the virtualenv directory
if-env = VIRTUAL_ENV
virtualenv = %(_)
endif =

相关问题 更多 >