Wsgi脚本和使用Python 3.5的最新django
我们正在尝试在我们的VPS上再部署一个web应用程序。 生产中已经有一个flask应用程序,由Python 3.5解释器持有 现在,我们需要另一个django应用程序。我们已经将apache2配置为同时承载这两个域(django正在子域上工作,而flask在“根”域上。这里一切正常。 但是,由于flask应用程序正在使用全局python解释器(版本3.5),我们无法运行django,因为它需要版本3.6或更高版本 以下是django WSGI脚本:Wsgi脚本和使用Python 3.5的最新django,python,django,python-3.5,Python,Django,Python 3.5,我们正在尝试在我们的VPS上再部署一个web应用程序。 生产中已经有一个flask应用程序,由Python 3.5解释器持有 现在,我们需要另一个django应用程序。我们已经将apache2配置为同时承载这两个域(django正在子域上工作,而flask在“根”域上。这里一切正常。 但是,由于flask应用程序正在使用全局python解释器(版本3.5),我们无法运行django,因为它需要版本3.6或更高版本 以下是django WSGI脚本: import os import sys p
import os
import sys
print('Python version is ... ') # 3.5
python_home = '/var/www/mysite/venv'
activate_this = python_home + '/bin/activate_this.py'
exec( open(activate_this).read() )
print(sys.executable) # in case of virtualenv it refers to /usr/bin/python3.5
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/mysite/mysite")
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
application = get_wsgi_application()
我们本可以将我们的解释器升级到3.6,但由于已建立的flask应用程序正在生产中,我们的经理不允许我们这样做。这可能没问题
尽管如此,如果我们使用virtualenv,它还是使用现有的全局解释器创建了虚拟环境,如上面3.5版所述
这就是我们现在被困的地方。Apache2 log是constanlty对我们说的:
[wsgi:error] mod_wsgi (pid=10081): Target WSGI script '/var/www/mysite/mysite/wsgi.py' cannot be loaded as Python module.
[wsgi:error] mod_wsgi (pid=10081): Exception occurred processing WSGI script '/var/www/mysite/mysite/wsgi.py'.
[wsgi:error] Traceback (most recent call last):
[wsgi:error] File "/var/www/mysite/mysite/wsgi.py", line 18, in <module>
[wsgi:error] from django.core.wsgi import get_wsgi_application
[wsgi:error] ImportError: No module named 'django'
我们假设升级可以解决我们的问题,因为django需要3.6版
和(“本教程是为Django3.0编写的,Django3.0支持Python 3.6及更高版本…”)
这里的最佳步骤是什么?尝试下载并建立Python3.6或更新版本,并参考我们的wsgi,或者尝试使用另一个版本的django
提前谢谢!对我来说,这很简单。我愚蠢地用sudo权限安装和配置了所有python服务,这就是为什么我这么做的原因
pip3 install <package-name>
pip3安装
这一切都进行得很顺利,但由于所有服务都在root下运行,所以我无法使用该包,所以我这样做了
sudo pip3 install <package-name>
sudo pip3安装
Django 2.2支持Python 3.5,这是一个长期支持版本,将在2022年4月之前得到支持。使用virtualenvs并在创建virtualenv时指定Python版本,为python3.6创建virtualenv。如果在同一系统上安装Python 3.6,您将遇到以下问题:SGI只能编译为Python的一个版本。您可以通过安装到虚拟环境中的一个(或两者)来绕过这个问题。此外,考虑是否可以在不同的VPS上安装Django应用程序。然后可以修改烧瓶和Django安装,而不必冒着破坏另一个VPS的风险。(这似乎是你的管理层的优先事项)。不利的一面是成本会更高。
sudo pip3 install <package-name>