Django mod_wsgi Apache Server, ModuleNotFoundError: No Module Named Django
Django mod_wsgi Apache Server, ModuleNotFoundError: No Module Named Django
我阅读了大量文章,但仍然无法弄清楚我错过了什么。我是 运行 来自 virtualenv 的 django 网站。这是我的配置文件。网址替换为,这里不能用。
Config
<VirtualHost *:80>
ServerAdmin sidharth@collaboration-management
ServerName <domain.com>
ServerAlias <domain.com>
DocumentRoot /home/sidharth/Downloads/gmcweb
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /home/sidharth/Downloads/gmcweb/static
<Directory /home/sidharth/Downloads/gmcweb/static>
Require all granted
</Directory>
<Directory /home/sidharth/Downloads/gmcweb/gmcweb>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess gmcweb python-home=/home/sidharth/Downloads/gmcwebenvlin python-path=/home/sidharth/Downloads/gmcweb
WSGIProcessGroup gmcweb
WSGIScriptAlias / /home/sidharth/Downloads/gmcweb/gmcweb/wsgi.py
</VirtualHost>
这是我的 WSGI.py 文件,没有更改之前不需要的任何内容
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gmcweb.settings')
application = get_wsgi_application()
Python Versions
我的virtualenv python 版本是3.9.5
默认 Google VM python 版本为 3.6.9
Python Installed Libraries
Package Version
------------------------ ---------
asgiref 3.4.0
attrs 21.2.0
autopep8 1.5.7
beautifulsoup4 4.9.3
certifi 2021.5.30
cffi 1.14.5
chardet 4.0.0
cryptography 3.4.7
defusedxml 0.7.1
Django 3.2.4
django-allauth 0.44.0
django-livereload-server 0.3.2
idna 2.10
jsonschema 3.2.0
oauthlib 3.1.1
pip 21.2.3
pycodestyle 2.7.0
pycparser 2.20
PyJWT 2.1.0
pyrsistent 0.18.0
python3-openid 3.2.0
pytz 2021.1
requests 2.25.1
requests-oauthlib 1.3.0
setuptools 57.4.0
six 1.16.0
soupsieve 2.2.1
sqlparse 0.4.1
toml 0.10.2
tornado 6.1
urllib3 1.26.6
我也安装了 apache modwsgi sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3
Error Log File
[Thu Sep 23 15:05:06.554545 2021] [mpm_event:notice] [pid 32077:tid 140392561593280] AH00489: Apache/2.4.29 (Ubuntu) mod_wsgi/4.5.17 Python/3.6 configured -- resuming normal operations
[Thu Sep 23 15:05:06.554594 2021] [core:notice] [pid 32077:tid 140392561593280] AH00094: Command line: '/usr/sbin/apache2'
[Thu Sep 23 15:05:19.081581 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] mod_wsgi (pid=32617): Target WSGI script '/home/sidharth/Downloads/gmcweb/gmcweb/wsgi.py' c$
[Thu Sep 23 15:05:19.081638 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] mod_wsgi (pid=32617): Exception occurred processing WSGI script '/home/sidharth/Downloads/g$
[Thu Sep 23 15:05:19.081828 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] Traceback (most recent call last):
[Thu Sep 23 15:05:19.081849 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] File "/home/sidharth/Downloads/gmcweb/gmcweb/wsgi.py", line 12, in <module>
[Thu Sep 23 15:05:19.081853 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] from django.core.wsgi import get_wsgi_application
[Thu Sep 23 15:05:19.081867 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] ModuleNotFoundError: No module named 'django'
[Thu Sep 23 15:05:32.244779 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] mod_wsgi (pid=32617): Target WSGI script '/home/sidharth/Downloads/gmcweb/gmcweb/wsgi.py' c$
[Thu Sep 23 15:05:32.244845 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] mod_wsgi (pid=32617): Exception occurred processing WSGI script '/home/sidharth/Downloads/g$
[Thu Sep 23 15:05:32.244924 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] Traceback (most recent call last):
[Thu Sep 23 15:05:32.244946 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] File "/home/sidharth/Downloads/gmcweb/gmcweb/wsgi.py", line 12, in <module>
[Thu Sep 23 15:05:32.244951 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] from django.core.wsgi import get_wsgi_application
[Thu Sep 23 15:05:32.244966 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] ModuleNotFoundError: No module named 'django'
该错误表明您没有安装 Django 或没有激活安装 Django 的虚拟环境。确保检查已安装软件包的列表并在其中找到 Django,通过:
$pip list
如果您遇到这样的问题并且有多个 Python 版本,那就是问题所在。我使用最新版本的 Python 生成了一个新 VM,并且只有一个版本。它就像一个魅力。
我们安装的时候Mod_WSGI会默认安装在环境路径下
libapache2-mod-wsgi-py3
只能与 ubuntu 18 中的 python 3.6.9 一起使用!!
如果你的 virtualenv 使用另一个版本的 python,你应该从这个 link 下载 mod_wsgi
:mod_wsgi
目前mod_wsgi的最新版本是4.9.0。按照以下步骤操作:
$ sudo apt install apache2 apache2-dev
$ wget https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.9.0
$ tar -xf 4.9.0
$ cd mod_wsgi-4.9.0/
$ ./configure --with-python=/your virtualenv path/bin/python[version]
# example: ./configure --with-python=/virtualenv/bin/python3.9
$ make
$ sudo make install
$ sudo systemctl restart apache2
我阅读了大量文章,但仍然无法弄清楚我错过了什么。我是 运行 来自 virtualenv 的 django 网站。这是我的配置文件。网址替换为
Config
<VirtualHost *:80>
ServerAdmin sidharth@collaboration-management
ServerName <domain.com>
ServerAlias <domain.com>
DocumentRoot /home/sidharth/Downloads/gmcweb
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /home/sidharth/Downloads/gmcweb/static
<Directory /home/sidharth/Downloads/gmcweb/static>
Require all granted
</Directory>
<Directory /home/sidharth/Downloads/gmcweb/gmcweb>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess gmcweb python-home=/home/sidharth/Downloads/gmcwebenvlin python-path=/home/sidharth/Downloads/gmcweb
WSGIProcessGroup gmcweb
WSGIScriptAlias / /home/sidharth/Downloads/gmcweb/gmcweb/wsgi.py
</VirtualHost>
这是我的 WSGI.py 文件,没有更改之前不需要的任何内容
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gmcweb.settings')
application = get_wsgi_application()
Python Versions
我的virtualenv python 版本是3.9.5 默认 Google VM python 版本为 3.6.9
Python Installed Libraries
Package Version
------------------------ ---------
asgiref 3.4.0
attrs 21.2.0
autopep8 1.5.7
beautifulsoup4 4.9.3
certifi 2021.5.30
cffi 1.14.5
chardet 4.0.0
cryptography 3.4.7
defusedxml 0.7.1
Django 3.2.4
django-allauth 0.44.0
django-livereload-server 0.3.2
idna 2.10
jsonschema 3.2.0
oauthlib 3.1.1
pip 21.2.3
pycodestyle 2.7.0
pycparser 2.20
PyJWT 2.1.0
pyrsistent 0.18.0
python3-openid 3.2.0
pytz 2021.1
requests 2.25.1
requests-oauthlib 1.3.0
setuptools 57.4.0
six 1.16.0
soupsieve 2.2.1
sqlparse 0.4.1
toml 0.10.2
tornado 6.1
urllib3 1.26.6
我也安装了 apache modwsgi sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3
Error Log File
[Thu Sep 23 15:05:06.554545 2021] [mpm_event:notice] [pid 32077:tid 140392561593280] AH00489: Apache/2.4.29 (Ubuntu) mod_wsgi/4.5.17 Python/3.6 configured -- resuming normal operations
[Thu Sep 23 15:05:06.554594 2021] [core:notice] [pid 32077:tid 140392561593280] AH00094: Command line: '/usr/sbin/apache2'
[Thu Sep 23 15:05:19.081581 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] mod_wsgi (pid=32617): Target WSGI script '/home/sidharth/Downloads/gmcweb/gmcweb/wsgi.py' c$
[Thu Sep 23 15:05:19.081638 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] mod_wsgi (pid=32617): Exception occurred processing WSGI script '/home/sidharth/Downloads/g$
[Thu Sep 23 15:05:19.081828 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] Traceback (most recent call last):
[Thu Sep 23 15:05:19.081849 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] File "/home/sidharth/Downloads/gmcweb/gmcweb/wsgi.py", line 12, in <module>
[Thu Sep 23 15:05:19.081853 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] from django.core.wsgi import get_wsgi_application
[Thu Sep 23 15:05:19.081867 2021] [wsgi:error] [pid 32617:tid 140392409851648] [remote 103.206.177.13:49604] ModuleNotFoundError: No module named 'django'
[Thu Sep 23 15:05:32.244779 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] mod_wsgi (pid=32617): Target WSGI script '/home/sidharth/Downloads/gmcweb/gmcweb/wsgi.py' c$
[Thu Sep 23 15:05:32.244845 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] mod_wsgi (pid=32617): Exception occurred processing WSGI script '/home/sidharth/Downloads/g$
[Thu Sep 23 15:05:32.244924 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] Traceback (most recent call last):
[Thu Sep 23 15:05:32.244946 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] File "/home/sidharth/Downloads/gmcweb/gmcweb/wsgi.py", line 12, in <module>
[Thu Sep 23 15:05:32.244951 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] from django.core.wsgi import get_wsgi_application
[Thu Sep 23 15:05:32.244966 2021] [wsgi:error] [pid 32617:tid 140392325842688] [remote 103.206.177.13:52916] ModuleNotFoundError: No module named 'django'
该错误表明您没有安装 Django 或没有激活安装 Django 的虚拟环境。确保检查已安装软件包的列表并在其中找到 Django,通过:
$pip list
如果您遇到这样的问题并且有多个 Python 版本,那就是问题所在。我使用最新版本的 Python 生成了一个新 VM,并且只有一个版本。它就像一个魅力。
我们安装的时候Mod_WSGI会默认安装在环境路径下
libapache2-mod-wsgi-py3
只能与 ubuntu 18 中的 python 3.6.9 一起使用!!
如果你的 virtualenv 使用另一个版本的 python,你应该从这个 link 下载 mod_wsgi
:mod_wsgi
目前mod_wsgi的最新版本是4.9.0。按照以下步骤操作:
$ sudo apt install apache2 apache2-dev
$ wget https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.9.0
$ tar -xf 4.9.0
$ cd mod_wsgi-4.9.0/
$ ./configure --with-python=/your virtualenv path/bin/python[version]
# example: ./configure --with-python=/virtualenv/bin/python3.9
$ make
$ sudo make install
$ sudo systemctl restart apache2