2016-12-03 17 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