uWSGI flask.ini使用全局Python还是虚拟Python?
以下代码位于名为uWSGI flask.ini使用全局Python还是虚拟Python?,python,nginx,flask,virtualenv,uwsgi,Python,Nginx,Flask,Virtualenv,Uwsgi,以下代码位于名为flask1.ini的uWSGI配置文件中: [uwsgi] socket = /tmp/flask1.sock chmod-socket = 777 evn = PRODUCTION=TRUE module = indy callable = app processes = 4 threads = 2 logto = /var/indylog 使用uWSGI和nginx为Flask应用程序在ubuntu14.04上设置生产服务器 我编写了一个新模块,它使用了Python2.7
flask1.ini的uWSGI配置文件中:
[uwsgi]
socket = /tmp/flask1.sock
chmod-socket = 777
evn = PRODUCTION=TRUE
module = indy
callable = app
processes = 4
threads = 2
logto = /var/indylog
使用uWSGI
和nginx
为Flask
应用程序在ubuntu14.04
上设置生产服务器
我编写了一个新模块,它使用了Python2.7
,在我本地的Ubuntu14.04
virtualenv(Flask development server)上运行,并且与生产环境设置的nginx
和uWSGI
相同。然而,当我在生产服务器上实时部署相同的代码时,它会出现大量语法错误,我正在试图弄清楚为什么会出现这种情况
我在本地桌面和生产服务器上运行python--version
,它们都是python2.7.6
我的问题:对于生产服务器上的上述uWSGI配置,使用的是哪个Python
?机器Python
或virtualenv Python
?准确地说,两者都不是。uwsgi实际上并不运行Python二进制文件,它直接使用libpython。它只是按照系统的LD_LIBRARY_路径
查找相应的libpython库,这通常不受virtualenv的影响
然而,受virtualenv影响的是uwsgi加载您的包的位置。您仍然需要在uwsgi.ini
中添加一行来指定您的虚拟现实的路径,如下所示:
virtualenv = /path/to/your/virtualenv
如果您希望配置uwsgi以使用不同版本的libpython,则需要为每个版本构建相应的插件,并在uwsgi.ini
中指定它。您也可以找到有关这方面的详细信息。uwsgi实际上并不运行Python二进制文件,它直接使用libpython。它只是按照系统的LD_LIBRARY_路径
查找相应的libpython库,这通常不受virtualenv的影响
然而,受virtualenv影响的是uwsgi加载您的包的位置。您仍然需要在uwsgi.ini
中添加一行来指定您的虚拟现实的路径,如下所示:
virtualenv = /path/to/your/virtualenv
如果您希望配置uwsgi以使用不同版本的libpython,则需要为每个版本构建相应的插件,并在uwsgi.ini
中指定它。您可以找到有关这方面的更多信息首先,您必须为源代码创建Python 3环境:
virtualenv-p/usr/bin/python3路径到您的项目/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
首先,您必须为源代码创建Python 3环境:
virtualenv-p/usr/bin/python3路径到您的项目/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
在virtualenv中安装uwsgi,以使用env配置的Python版本<代码>/path/to/env/bin/uwsgi--ini/path/to/flask.ini
。而不是全局uwsgi path/to/your/flask.ini
,后者将使用系统安装的Python版本。在virtualenv中安装uwsgi以使用env配置的Python版本<代码>/path/to/env/bin/uwsgi--ini/path/to/flask.ini。而不是全局uwsgi path/to/your/flask.ini
,后者将使用系统安装的Python版本。如何找出uwsgi使用的是哪个版本的libpython?我的本地机器和生产服务器都是ubuntu14.04
,默认情况下它们不应该有相同的LD\u LIBRARY\u路径吗。如果您真的想知道哪个libpython是开放的,您可以在生产服务器上运行类似于lsof-p的东西。但是既然你运行的是Ubuntu14.04,我想你可以运行sudo-apt-get-install-uwsgi-plugin-python3
,它似乎安装并将python3设置为默认插件。忘了提一下:在你的开发服务器上,你很可能没有使用uwsgi,而是使用django的runserver
,它运行起来像一个普通的Python脚本,尊重您的virtualenv等。这就是它选择正确Python版本的原因。如何找出uwsgi使用的是哪个版本的libpython?我的本地机器和生产服务器都是ubuntu14.04
,默认情况下它们不应该有相同的LD\u LIBRARY\u路径吗。如果您真的想知道哪个libpython是开放的,您可以在生产服务器上运行类似于lsof-p的东西。但是既然你运行的是Ubuntu14.04,我想你可以运行sudo-apt-get-install-uwsgi-plugin-python3
,它似乎安装并将python3设置为默认插件。忘了提一下:在你的开发服务器上,你很可能没有使用uwsgi,而是使用django的runserver
,它运行起来像一个普通的Python脚本,尊重您的virtualenv等。这就是它选择正确Python版本的原因。