python - mod_wsgi 在 Django 和 venv 上存在问题。无法作为 python 模块加载。ModuleNotFoundError:没有名为“django”的模块
问题描述
我正在尝试使用 Apache 和 mod_wsgi 设置 Django 项目,但无法使其正常工作。搜索了所有答案,但没有任何帮助。
python-home=/var/www/example.com/venv
python-path=/var/www/example.com/myproject
- 位置
wsgi.py
-/var/www/example.com/myproject/myproject/
这是我的 apache 配置。
Protocols h2 http/1.1
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess example python-home=/var/www/example.com/venv python-path=/var/www/example.com/myproject
<VirtualHost *:80>
ServerAdmin riden@example.com
ServerAlias www.example.com
ServerName example.com
DocumentRoot /var/www/example.com/myproject/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/example.com/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /favicon.ico /var/www/example.com/myproject/static/images/favicon/favicon.ico
Alias /static /var/www/example.com/myproject/static
<Directory /var/www/example.com/myproject/static>
Require all granted
</Directory>
WSGIProcessGroup example
WSGIScriptAlias / /var/www/example.com/myproject/myproject/wsgi.py
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
这是错误。
[28] [mpm_prefork:notice] [pid 959] AH00163: Apache/2.4.29 (Ubuntu) OpenSSL/1.1.1g mod_wsgi/4.5.17 Python/3.6 configured -- resuming normal operations
[53] [core:notice] [pid 959] AH00094: Command line: '/usr/sbin/apache2'
[03] [wsgi:error] [pid 969] [remote 1.2.3.4:58356] mod_wsgi (pid=969): Target WSGI script '/var/www/example.com/myproject/myproject/wsgi.py' cannot be loaded as Python module.
[08] [wsgi:error] [pid 969] [remote 1.2.3.4:58356] mod_wsgi (pid=969): Exception occurred processing WSGI script '/var/www/example.com/myproject/myproject/wsgi.py'.
[32] [wsgi:error] [pid 969] [remote 1.2.3.4:58356] Traceback (most recent call last):
[79] [wsgi:error] [pid 969] [remote 1.2.3.4:58356] File "/var/www/example.com/myproject/myproject/wsgi.py", line 12, in <module>
[87] [wsgi:error] [pid 969] [remote 1.2.3.4:58356] from django.core.wsgi import get_wsgi_application
[04] [wsgi:error] [pid 969] [remote 1.2.3.4:58356] ModuleNotFoundError: No module named 'django'
我尝试过的事情清单,
- 已验证 mod_wsgi 是使用
sudo apt-get install libapache2-mod-wsgi-py3
. 系统中没有其他 mod_wsgi(ubuntu 18)。 - venv 是使用 python 3 (3.9) 创建的,所有模块都是从
myproject/requirements.txt
. - 激活
venv
和验证的 Django 正在通过迁移工作。
我究竟做错了什么?我从早上开始就一直在尝试这个,但我没有选择。请帮忙。
附加信息:
- 我的 ubuntu 有 3 个 python 版本。默认的 Python 2、Python 3.6 和 Python 3.9(我使用它创建
venv
的)。
解决方案
推荐阅读
- javascript - asp按钮防止回发javascript函数返回false
- python - 如何使选定的 QListView 项目可见?
- powershell - PowerShell 和 Robocopy - Robocopy 未启动。
- google-apps-script - 减少谷歌脚本搜索时间的方法
- php - 用表格将数据保存在两个表中
- macos - SWIFT4中的AES解密产生空值
- amazon-web-services - 在 AWS Elastic Beanstalk 上运行 Flask 应用程序 - 不同的设置
- java - 带有逗号分隔列表的正向 Lookbehind
- ruby-on-rails - nginx是否支持早期提示请求(103状态)
- javascript - 闭包和计数器堆叠