2016-12-03 70 views
1

我已经安装了Apache2.4.7一个Ubuntu服务器上我的Django应用程序并将其配置为使用py3.5.2从虚拟环境。Django的阿帕奇WSGI变化Python版本

然而,从我可以在错误看到,它开始为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> 

我在做什么错这里?

+0

[在Ubuntu 11上的Apache 2上使用virtualenv的多个Django应用程序可能的重复](http://stackoverflow.com/questions/9991461/multiple-django-applications-using-virtualenv-on-apache-2-on- ubuntu-11) – user312016

+0

不是重复的。这个问题是关于一台服务器上的多个Django应用程序。 我只有一个应用程序。 我的问题是运行我的应用程序的Python版本。 – rwms

回答

3

Apache的mod_wsgi模块针对特定的Python版本进行编译。您无法使用不同的Python版本运行,只需将它指向Python虚拟环境以获取不同的Python版本即可。这是mod_wsgi的文档中散尽提及在使用Python的虚拟环境:

你可以有mod_wsgi的运行像Python 3.5,如果是原编译为Python 3.4的唯一途径,是卸载该版本的mod_wsgi并构建/安装为Python 3.5编译的mod_wsgi版本。

0

问题的根源在于Graham Dumpleton的答案。 我只是想提供一些更多的信息,以防万一它面临与我一样的问题。

有在Ubuntu 14.04服务器为Python 3.5.2没有官方的回购协议。 而不是使用某些不支持回购像this one,我编的Python 3.5.2使用这种非常简单的教程here源。 跳过许多圈之后,由于库路径不同,我无法安装Python 3.5.2的mod_wsgi。

在已经花了太多时间在这,我卸载了一切:Python中,阿帕奇,图书馆和从头开始安装一切,使用Python 3.4这个时候。

它的官方支持的Ubuntu 14.04和我的项目,我发现没有任何兼容性问题。

因此,这里是我的安装什么的名单:从易 python3, python3-PIP, 的Apache2, 的Apache2-dev的, 中的libapache2-MOD-WSGI-PY 3和 从PIP: Django, mod-wsgi, virtualenv(如果你打算使用venv)。

然后,只需配置 “/etc/apache2/apache.conf”,运行 “apache2ctl configtest”,然后重新启动该服务。 如需更多帮助,请参阅本指南here