我在此环境设置的标题中显示错误。 Apache2与mod_wsgi,Python 3.5,Django 2.0.2。我正在使用virtualevn。
我的虚拟环境位于:/ home / santosh / Documents / project / project / 和django应用程序在/ home / santosh / Documents / project / Reports
以下是wsgi.py
文件
import os, sys
sys.path.append('/home/santosh/Documents/project/Reports/Reports')
sys.path.append('/home/santosh/Documents/project/Reports')
sys.path.append('/home/santosh/Documents/project/project/lib/python3.5/site-packages')
sys.path.append('/home/santosh/Documents/project/project/lib/python3.5')
sys.path.append('/home/santosh/Documents/project/project/bin')
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Reports.settings")
application = get_wsgi_application()
Stacktrace:
[Sun Feb 04 20:40:39.396427 2018] [wsgi:error] [pid 6428:tid 140043928524544] [client 127.0.0.1:60276] mod_wsgi(pid = 6428):目标 WSGI脚本'/home/santosh/Documents/project/Reports/Reports/wsgi.py' 无法作为Python模块加载。
[Sun Feb 04 20:40:39.398284 2018] [wsgi:error] [pid 6428:tid 140043928524544] [client 127.0.0.1:60276] mod_wsgi(pid = 6428): 处理WSGI脚本时发生异常 '/home/santosh/Documents/project/Reports/Reports/wsgi.py'。
[Sun Feb 04 20:40:39.398425 2018] [wsgi:error] [pid 6428:tid 140043928524544] [客户端127.0.0.1:60276]回溯(最近的呼叫 最后):
[Sun Feb 04 20:40:39.398475 2018] [wsgi:error] [pid 6428:tid 140043928524544] [client 127.0.0.1:60276]文件 “/home/santosh/Documents/project/Reports/Reports/wsgi.py”,第30行,在
[Sun Feb 04 20:40:39.398555 2018] [wsgi:error] [pid 6428:tid 140043928524544]来自django.core.wsgi的[client 127.0.0.1:60276] import get_wsgi_application
[Sun Feb 04 20:40:39.398565 2018] [wsgi:error] [pid 6428:tid 140043928524544] [client 127.0.0.1:60276]文件 “/home/santosh/Documents/project/project/lib/python3.5/site-packages/django/init.py” 第1行,
[Sun Feb 04 20:40:39.398591 2018] [wsgi:error] [pid 6428:tid 140043928524544] [客户端127.0.0.1:60276]来自 django.utils.version导入get_version
[Sun Feb 04 20:40:39.398598 2018] [wsgi:error] [pid 6428:tid 140043928524544] [client 127.0.0.1:60276]文件 “/home/santosh/Documents/project/project/lib/python3.5/site-packages/django/utils/version.py” 第61行,
[Sun Feb 04 20:40:39.398628 2018] [wsgi:error] [pid 6428:tid 140043928524544] [client 127.0.0.1:60276] @ functools.lru_cache()
[Sun Feb 04 20:40:39.398643 2018] [wsgi:error] [pid 6428:tid 140043928524544] [client 127.0.0.1:60276] AttributeError:'module' object没有属性'lru_cache'
答案 0 :(得分:2)
经过大量的追踪,错误和谷歌搜索,最后我能够成功运行。
我收到了lru_cache错误,因为我做了sudo apt-get install libapache2-mod-wsgi 安装mod-wsgi。我认为这可能已安装到Ubuntu 16.04上的默认python,即python2.7。
解决方案:我从ubuntu卸载了libapache2-mod-wsgi,并用pip install mod-wsgi
安装了它,然后最终从site-packages目录复制了已安装的mod-wsgi的路径,并在apache2 / mods-available / wsgi中更新了.load文件。
因此最好从virtualenv或普通的python3安装mod-wsgi,然后更新apache文件,而不是直接在ubuntu上安装libapache2-mod-wsgi。
答案 1 :(得分:0)
我在Google偶然发现了CentOS 7的结果,因此对于处于类似职位的任何人,这都是为我解决的问题:
yum install mod_wsgi
会安装python2版本。像OP中那样,这会导致痛苦和痛苦以及疯狂的错误。
解决方案是从CentOS的IUS存储库中安装python36(或您正在使用的任何python3版本)版本。我必须从pkgs.org下载,因为我的系统没有外部互联网访问权限,所以我不确定如何从yum下载它,但是我可以确认,一旦我安装了兼容版本的mod_wsgi,一切都会开始工作。 / p>
答案 2 :(得分:0)
我跑了
sudo apt remove libapache2-mod-wsgi
sudo apt install libapache2-mod-wsgi-py3
在Ubuntu 18.04上安装Python3版本,然后重新加载Apache,这为我解决了错误。
答案 3 :(得分:0)
我在 virtualenv 中安装了 django,并且最初安装了 uWSGI==2.0.19.1
系统范围。
遵循其他答案的建议并没有解决我的问题。
然后我在我的 virtualenv 中安装了 uWSGI==2.0.19.1
,但问题仍然发生。
甚至命令 which uwsgi
也指向了我的 virtualenv:
/home/user/venv/bin/uwsgi
所以我最终通过使用我的 virtualenv 的完整路径调用 uwsgi 使其工作:
/home/user/venv/bin/uwsgi --http :8001 --module my_django_project.wsgi
那么问题就解决了。
我还看到,当它失败时,我收到了以下消息:
<块引用>检测到的二进制路径:/usr/local/bin/uwsgi
所以我想只要删除 /usr/local/bin/uwsgi 就可以解决问题。