Skip to main content
 首页 » 编程设计

python之使用 django 运行 Python 2 和 Python3 的 uWSGI

2024年11月01日34softidea

我在全局范围内安装了 uWSGI,它在 Python 3.3 的 virtualenv 和 Django 上运行得很好。但现在我想尝试使用 Python 2.7 运行另一个 uWSGI 实例。我在 Python 2.7 的 virtualenv 中设置了 home 选项,但它使用的 python 版本仍然是 3.3 版本。

目前我对 uWSGI 有这样的设置:

 # Django-related settings 
 # the base directory (full path) 
 chdir           = /home/srvadmin/webapps2.7/project 
 # Django's wsgi file 
 module          = project.wsgi 
 # the virtualenv (full path) 
 home            = /home/srvadmin/py2.7 
 
 # process-related settings 
 # master 
 master          = true 
 # maximum number of worker processes 
 processes       = 10 
 # the socket (use the full path to be safe 
 socket          = /tmp/mysite2.7.sock 
 # ... with appropriate permissions - may be needed 
 chmod-socket    = 666 
 # clear environment on exit 
 vacuum          = true 

但我总是明白这一点

uWSGI http bound on 0.0.0.0:1234 fd 4 
spawned uWSGI http 1 (pid: 31507) 
uwsgi socket 0 bound to TCP address 127.0.0.1:33896 (port auto-assigned) fd 3 
Python version: 3.3.2 (default, May 16 2013, 18:35:00)  [GCC 4.6.3] 
Set PythonHome to /home/srvadmin/py2.7/ 
Fatal Python error: Py_Initialize: Unable to get the locale encoding 
ImportError: No module named 'encodings' 
Aborted 

请您参考如下方法:

您的 uWSGI 二进制文件与特定的 libpython(3.3 版本)链接。您必须为 python2.7 构建 uWSGI 的第二个副本或使用模块化构建:

(来自源目录)

python3 uwsgiconfig.py --build nolang

python3 uwsgiconfig.py --plugin 插件/python nolang python33

python2 uwsgiconfig.py --plugin 插件/python nolang python27

您将以“uwsgi”二进制文件和“python33_plugin.so”和“python27_plugin.so”结尾