apache WSGI django模块未找到错误:没有名为'django'的模块

oalqel3c  于 2023-01-14  发布在  Apache
关注(0)|答案(1)|浏览(131)

我一直在尝试让我的django API通过apache部署,我已经安装了python 3.7的mod_wsgi,我的venv使用python 3.7.15,尝试进入我的django应用程序url,我得到了一个500错误。
错误日志显示:

[Tue Dec 20 21:31:30.690951 2022] [:error] [pid 19216] /usr
[Tue Dec 20 21:31:30.691287 2022] [:error] [pid 19216]  mod_wsgi (pid=19216): Target WSGI script '.../project/project/wsgi.py' cannot be loaded as Python module.
[Tue Dec 20 21:31:30.691323 2022] [:error] [pid 19216]  mod_wsgi (pid=19216): Exception occurred processing WSGI script '.../project/project/wsgi.py'.
[Tue Dec 20 21:31:30.691393 2022] [:error] [pid 19216]  Traceback (most recent call last):
[Tue Dec 20 21:31:30.691423 2022] [:error] [pid 19216]    File ".../project/project/wsgi.py", line 19, in <module>
[Tue Dec 20 21:31:30.691428 2022] [:error] [pid 19216]      from django.core.wsgi import get_wsgi_application
[Tue Dec 20 21:31:30.691444 2022] [:error] [pid 19216]  ModuleNotFoundError: No module named 'django'
[Tue Dec 20 21:31:51.190670 2022] [:error] [pid 19217] 3.7.15 (default, Oct 31 2022, 22:44:31)
[Tue Dec 20 21:31:51.190707 2022] [:error] [pid 19217] [GCC 7.3.1 20180712 (Red Hat 7.3.1-15)]

apache配置文件:

<VirtualHost *:80>

    ServerName api.project.com

    DocumentRoot path/to/project/root

    WSGIScriptAlias / /path/to/wsgi.py
    WSGIDaemonProcess project-name processes=4 threads=1 display-name=%{GROUP} python-path=path/to/lib/python3.7/site-packages:/path/to/project/root
    WSGIProcessGroup project-group

    <Directory "/path/to/project/root">
        Require all granted
    </Directory>

    #SSL stuff...

</VirtualHost>

wsgi.py:

import os
import sys

from django.core.wsgi import get_wsgi_application

path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if path not in sys.path:
    sys.path.append(path)

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')

application = get_wsgi_application()

我最初安装了错误的mod_wsgi(为Python2构建的)。我删除了那个,安装了python3-mod_wsgi.x86_64,并在httpd.conf中更改了模块路径。然后我意识到我的mod_wsgi是为Python 3. 7版本构建的,但是我的应用程序venv运行的是python 3. 6. 8。然后我擦除了venv,用python 3. 7. 15创建了一个新的。已将conf WSGIDAEMONPROCESS路径更改为正确的3.7站点包。仍然出现相同错误。

webghufk

webghufk1#

仅仅安装虚拟环境是不够的,您还必须激活它。
运行pip install -r requirements.txt以安装项目所需的包。

错误

第一个错误行显示Target WSGI script '.../project/project/wsgi.py' cannot be loaded as Python module.
这意味着您的环境变量DJANGO_SETTINGS_MODULE设置不正确。要执行此操作,请转到.bashrc并将其设置为与asgi.py/wsgi.py文件中相同的值。
运行source .bashrc以重新加载配置文件,并重新启动尝试运行应用程序的bash终端(或打开一个新终端)。
这应该行得通。

相关问题