gpt4 book ai didi

python - Django/mod_wsgi/Apache - mod_wsgi 没有使用它编译的 Python 版本 - "ModuleNotFoundError: No module named ' math'"

转载 作者:行者123 更新时间:2023-12-03 14:52:54 31 4
gpt4 key购买 nike

我正在尝试在 Ubuntu 16.04.6 服务器上部署带有 Apache2 和 mod_wsgi 的 Django 应用程序,但我正在努力让 mod_wsgi 使用正确的 python 版本。
我从源代码安装了 mod_wsgi,和 configured it针对系统python3编译,特别是python3.7.8
我的 Django 应用程序的虚拟环境也在运行 python3.7.8。
我的 VirtualHost 配置文件如下所示:

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName kumberas.com
ServerAdmin webmaster@localhost.com

WSGIScriptAlias / /home/dan/app/kumberas/kumberas/main/wsgi.py
Alias /static/ /home/dan/app/kumberas/kumberas/static/

<Directory /home/dan/app/kumberas/kumberas/static>
Require all granted
</Directory>

<Directory /home/dan/app/kumberas/venv>
Require all granted
</Directory>

<Directory /home/dan/app/kumberas/kumberas/main>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

<Location />
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require user kr
AuthBasicProvider file
</Location>

WSGIDaemonProcess kumberas \
python-home=/home/dan/app/kumberas/venv \
python-path=/home/dan/app/kumberas
WSGIProcessGroup kumberas

</VirtualHost>
</IfModule>
当我尝试访问该站点时,我在 Apache 错误日志中收到 500 错误和以下内容。
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] mod_wsgi (pid=21635): Failed to exec Python script file '/home/dan/app/kumberas/kumberas/main/wsgi.py'.
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] mod_wsgi (pid=21635): Exception occurred processing WSGI script '/home/dan/app/kumberas/kumberas/main/wsgi.py'.
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] Traceback (most recent call last):
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] File "/home/dan/app/kumberas/kumberas/main/wsgi.py", line 12, in <module>
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] from django.core.wsgi import get_wsgi_application
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] File "/home/dan/app/kumberas/venv/lib/python3.7/site-packages/django/__init__.py", line 1, in <module>
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] from django.utils.version import get_version
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] File "/home/dan/app/kumberas/venv/lib/python3.7/site-packages/django/utils/version.py", line 1, in <module>
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] import datetime
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] File "/usr/lib/python3.7/datetime.py", line 8, in <module>
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] import math as _math
[wsgi:error] [pid 21635] [remote xx.xx.xx.xx:58603] ModuleNotFoundError: No module named 'math'
我做了一些挖掘,发现了这个 wsgi.py 用于检查 mod_wsgi 正在使用的 python 版本的 mod_wsgi 文档中的文件,并在我访问该站点时获得以下输出:
sys.version = '3.7.2 (default, Jan 23 2020, 09:44:10) \n[GCC 5.4.0 20160609]'
sys.prefix = '/home/dan/app/kumberas/venv'
我假设不匹配的 python 版本 3.7.8 != 3.7.2是这里的问题,但据我所知,服务器上没有安装 python3.7.2,我已经多次重新安装 mod_wsgi 以确保我将其配置为使用 3.7.8。
我还确认,虽然在虚拟环境中,我 a) 能够使用 manage.py runserver 运行 Django 应用程序,并且 b) 可以运行 get_wsgi_application()在 Django shell 中手动。
有没有人知道这个版本不匹配是否是问题,以及如何解决?

最佳答案

如果使用 virtualenv 或 virtualenvwrapper 创建环境,则需要在 wsgi.py 中调用激活脚本:

python_home = '/home/dan/app/kumberas/venv'

activate_this = python_home + '/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

关于python - Django/mod_wsgi/Apache - mod_wsgi 没有使用它编译的 Python 版本 - "ModuleNotFoundError: No module named ' math'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63398489/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com