Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
uWSGI flask.ini使用全局Python还是虚拟Python?_Python_Nginx_Flask_Virtualenv_Uwsgi - Fatal编程技术网

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版本的原因。