uWSGI flask.ini使用全局Python还是virtualevn Python?

时间:2015-10-06 13:31:43

标签: python nginx flask virtualenv uwsgi

以下代码位于名为findUserByEmail(String email)的uWSGI配置文件中:

flask1.ini

生产服务器在[uwsgi] socket = /tmp/flask1.sock chmod-socket = 777 evn = PRODUCTION=TRUE module = indy callable = app processes = 4 threads = 2 logto = /var/indylog 上使用ubuntu 14.04设置,uWSGI用于nginx应用。

我编写了一个使用Flask的新模块,它在我的本地Python 2.7 virtualenv(Flask开发服务器)和同一ubuntu 14.04nginx集上运行时没有任何错误作为生产环境。但是,当我在生产服务器上部署相同的代码时,它会提供一堆uWSGI,我试图弄清楚为什么会这样。

我在本地桌面和生产服务器上运行syntax errors,它们都是python --version

我的问题:在生产服务器上使用上面的uWSGI配置,Python 2.7.6正在使用?机器PythonPython

3 个答案:

答案 0 :(得分:1)

确切地说,两者都没有。 uwsgi实际上并不运行Python二进制文件,而是直接使用libpython。它只是跟随你的系统LD_LIBRARY_PATH找到相应的libpython库,这通常不受virtualenv的影响。

受virtualenv影响的是,uwsgi将加载您的软件包的位置。您仍然需要在uwsgi.ini中添加一行来指定您的virtualenv这样的路径:

virtualenv = /path/to/your/virtualenv

如果您希望将uwsgi配置为使用不同版本的libpython,则需要为每个版本构建相应的插件,并在uwsgi.ini中指定它。您可以找到有关此here

的更多信息

答案 1 :(得分:1)

首先,您必须为源代码创建Python 3环境: virtualenv -p /usr/bin/python3 path_to_your_project/env

并安装所需的数据包:

cd path_to_your_project
source env/bin/activate
# you can use pip to install packets required, e.g:
pip install -r requirements.txt

最后,将virtualenv添加到您的uwsgi.ini文件中:

virtualenv = path_to_your_project/env

答案 2 :(得分:0)

在virtualenv中安装uwsgi以使用env配置的任何Python版本。 /path/to/env/bin/uwsgi --ini /path/to/flask.ini。而不是全局uwsgi path/to/your/flask.ini,它将使用系统安装的Python版本。