Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wsgi脚本和使用Python 3.5的最新django_Python_Django_Python 3.5 - Fatal编程技术网

Wsgi脚本和使用Python 3.5的最新django

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

我们正在尝试在我们的VPS上再部署一个web应用程序。 生产中已经有一个flask应用程序,由Python 3.5解释器持有

现在,我们需要另一个django应用程序。我们已经将apache2配置为同时承载这两个域(django正在子域上工作,而flask在“根”域上。这里一切正常。 但是,由于flask应用程序正在使用全局python解释器(版本3.5),我们无法运行django,因为它需要版本3.6或更高版本

以下是django WSGI脚本:

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>