Django Apache WSGI 更改 Python 版本

3
我已经在一个Ubuntu服务器上安装了Django应用程序,并配置其使用虚拟环境中的py3.5.2,Apache2.4.7来运行它。但是从错误信息中可以看出,它开始于3.5版本,但默认为3.4版本。请解释这是为什么。
/var/www/venv/lib/python3.5/site-packages
/usr/lib/python3.4

请见下面的完整错误信息:
SyntaxError at /

invalid syntax (forms.py, line 2)

Request Method:     GET
Request URL:    http://intranet.example.com/
Django Version:     1.10.1
Exception Type:     SyntaxError
Exception Value:    

invalid syntax (forms.py, line 2)

Exception Location:     /var/www/intranet/formater/views.py in <module>, line 7
Python Executable:  /usr/bin/python3
Python Version:     3.4.3
Python Path:    

['/var/www/intranet',
 '/var/www/venv/lib/python3.5/site-packages',
 '/usr/lib/python3.4',
 '/usr/lib/python3.4/plat-x86_64-linux-gnu',
 '/usr/lib/python3.4/lib-dynload',
 '/usr/local/lib/python3.4/dist-packages',
 '/usr/lib/python3/dist-packages',
 '/var/www/intranet',
 '/var/www/intranet/venv/lib/python3.5/site-packages']

以下是我的apache2.conf文件:

WSGIScriptAlias / /var/www/intranet/intranet/wsgi.py
#WSGIPythonPath /var/www/intranet/:/var/www/intranet/venv/lib/python3.5/site-packages

WSGIDaemonProcess intranet.example.com python-path=/var/www/intranet:/var/www/venv/lib/python3.5/site-packages
WSGIProcessGroup intranet.example.com

<Directory /var/www/intranet/intranet>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

这里我做错了什么?

1
不是重复问题。那个问题是关于在一个服务器上运行多个 Django 应用程序。 我只有一个应用程序。 我的问题是运行我的应用程序的 Python 版本。 - rwms
2个回答

12

Apache的mod_wsgi模块是为特定的Python版本编译的。您不能通过将其指向不同Python版本的Python虚拟环境来运行它。在mod_wsgi文档中,关于使用Python虚拟环境的内容已经很清楚地说明了这一点:

如果您想让原本针对Python 3.4编译的mod_wsgi以Python 3.5的方式运行,唯一的方法是卸载该版本的mod_wsgi并构建/安装编译为Python 3.5的mod_wsgi版本。


2
问题的根源是Graham Dumpleton的回答。 我只是想提供更多信息,以帮助面临与我相同问题的人。
在Ubuntu服务器14.04中没有Python 3.5.2的官方仓库。 与其使用像this one这样的不受支持的仓库,我使用了这个非常简单的教程here从源代码编译Python 3.5.2。 经过许多困难后,我无法安装适用于Python 3.5.2的mod_wsgi,因为库路径不同。
已经花费了太多时间,我卸载了所有东西:Python、Apache、库,并从头开始安装了所有东西,这次使用Python 3.4。
它在Ubuntu 14.04上得到了官方支持,对于我的项目,我没有注意到任何兼容性问题。
以下是我安装的简短列表: 从apt中安装: python3, python3-pip, apache2, apache2-dev, libapache2-mod-wsgi-py3, 从pip中安装: Django, mod-wsgi, virtualenv(如果您计划使用虚拟环境)。
然后只需配置“/etc/apache2/apache.conf”,运行“apache2ctl configtest”并重新启动服务即可。 如需额外帮助,请参阅此指南here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接