错误 [导入错误:没有名为 'django' 的模块] 尝试将 apache2 与 Django 1.11 集成



我真的需要这方面的帮助,因为我一直在努力了解它。我正在尝试让 Django 使用 apache2 服务器。但是,当我尝试登录 apache 页面时,我得到:


内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请与服务器管理员联系,webmaster@localhost告知他们此错误发生的时间以及您在此错误之前执行的操作。

有关此错误的详细信息,请参阅服务器错误日志。 Apache/2.4.7 (Ubuntu) 服务器在 127.0.1.1 端口 80


我已经从 ubuntu 1404LTS 复制了我的版本输出


Python 3.6.0+(默认,2017 年 2 月 4 日,11:11:33) [GCC 4.9.4] 在 Linux 上 键入"帮助"、"版权"、"信用"或"许可证"以获取更多信息。


姜戈。版本 (1, 11, 4, "决赛", 0)


DPKG -L | grep WSGI ii libapache2-mod-wsgi-py3 3.4-4ubuntu2.1.14.04.2 amd64 Python 3 WSGI 适配器模块,用于 Apache


当我打开日志时,我看到以下内容:


[2018 年 2 月 27 日星期二 02:32:43.409875] [:错误] [pid 3211:tid 140311519147904] 断言错误: [2018 年 2 月 27 日星期二 02:32:44.388403][:警告][pid 3567:tid 139906080114560] mod_wsgi:针对 Python/3.4.0 编译。 [2018 年 2 月 27 日星期二 02:32:44.388477][:警告][pid 3567:tid 139906080114560] mod_wsgi:使用 Python/3.4.3 的运行时。 [2018 年 2 月 27 日星期二 02:32:44.389364][mpm_event:通知][PID 3567:TID 139906080114560]AH00489: Apache/2.4.7 (Ubuntu) mod_wsgi/3.4 Python/3.4.3 co$ [2018 年 2 月 27 日星期二 02:32:44.389393][核心:通知][PID 3567:TID 139906080114560]AH00094:命令行:"/usr/sbin/apache2" [2018 年 2 月 27 日星期二 02:32:56.461421][:错误][PID 3570:TID 139905975727872][远程 127.0.0.1:10860] mod_wsgi (pid=3570):目标 WSGI 脚本 '/ho$ [周二2月27日 02:32:56.461514 2018][:错误][PID 3570:TID 139905975727872][远程 127.0.0.1:10860] mod_wsgi (pid=3570): 发生异常 proc$ [2018 年 2 月 27 日星期二 02:32:56.474525][:错误][PID 3570:TID 139905975727872][远程 127.0.0.1:10860]回溯(最近一次调用): [2018 年 2 月 27 日星期二 02:32:56.476070][:错误][PID 3570:TID 139905975727872][远程 127.0.0.1:10860] 文件 "/home/serverio/server.io_Tools/server.i$ [2018 年 2 月 27 日星期二 02:32:56.476112][:错误][PID 3570:TID 139905975727872][远程 127.0.0.1:10860] 从 django.core.wsgi 导入get_wsgi_ap$ [周二2月27日 02:32:56.476194 2018][:错误][PID 3570:TID 139905975727872][远程 127.0.0.1:10860]导入错误:没有名为"django"的模块 [周二2月27日 02:32:59.026294 2018][:错误][PID 3570:TID 139905858123520][远程 127.0.0.1:30046] mod_wsgi (pid=3570):目标 WSGI 脚本 '/ho$ [2018 年 2 月 27 日星期二 02:32:59.026362][:错误][PID 3570:TID 139905858123520][远程 127.0.0.1:30046] mod_wsgi (pid=3570): 发生异常 proc$ [2018 年 2 月 27 日星期二 02:32:59.026402][:错误][PID 3570:TID 139905858123520][远程 127.0.0.1:30046]回溯(最近一次调用): [2018 年 2 月 27 日星期二 02:32:59.026461][:错误][PID 3570:TID 139905858123520][远程 127.0.0.1:30046] 文件 "/home/serverio/server.io_Tools/server.i$ [2018 年 2 月 27 日星期二 02:32:59.026480][:错误][PID 3570:TID 139905858123520][远程 127.0.0.1:30046] 从 django.core.wsgi 导入get_wsgi_ap$ [2018 年 2 月 27 日星期二 02:32:59.026507][:错误][PID 3570:TID 139905858123520][远程 127.0.0.1:30046]导入错误:没有名为"django"的模块 [2018 年 2 月 27 日星期二 02:33:07.853432][:错误][PID 3570:TID 139905975727872][远程 127.0.0.1:30046] mod_wsgi (pid=3570):目标 WSGI 脚本 '/ho$


这是我对 apache 服务器的 000 默认配置:


ServerName serverio

ServerAdmin webmaster@localhost
Alias /static /home/serverio/server.io_Tools/server.io/mysite/userManager/static
<Directory /home/serverio/server.io_Tools/server.io/mysite/userManager/static>
Require all granted
</Directory>
<Directory /home/serverio/server.io_Tools/server.io/mysite/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess serverio python-path=/home/serverio/server.io_Tools/server.io:/home/serverio/server.io_Tools/server.io/python3.6/site-packages
WSGIProcessGroup serverio
WSGIScriptAlias / /home/serverio/server.io_Tools/server.io/mysite/mysite/wsgi.py

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
____________________________________________________________________________

当我尝试Yka建议的步骤时,我收到错误: 当我运行配置命令时,我收到以下错误:__checking ___________________________________________________________________________ APXS2...不 正在检查 APXS...不 检查海湾合作委员会...海湾合作委员会 检查 C 编译器是否正常工作...是的 正在检查 C 编译器默认输出文件名...a.out 检查可执行文件的后缀... 检查我们是否正在交叉编译...不 正在检查目标文件的后缀...o 检查我们是否正在使用 GNU C 编译器...是的 检查 GCC 是否接受 -g...是的 检查 gcc 选项以接受 ISO C89...不需要 检查中国籍是的 正在检查阿帕奇版本... ./配置:第 2765 行:apxs:找不到命令 ./configure: 第 2765 行: apxs: 找不到命令 ./configure: 第 2766 行: apxs: 找不到命令 ./configure: 第 2769 行:/: 是一个目录

./configure: 第 2964 行: apxs: 找不到命令 配置:创建 ./config.statusconfig.status: create Makefile


当我尝试发布 sudo make 时,我得到:

apxs -c -I/usr/include/python3.6m -

DNDEBUG -Wc,-g -Wc,-O2 src/server/mod_wsgi.c src/server/wsgi_*.c -L/usr/lib -L/usr/lib/python3.6/config-3.6m -lpython3.6m -lpthread -ldl -lutil -lm/bin/sh: 1: apxs: 未找到 make: *** [src/server/mod_wsgi.la] 错误 127

YKH,看看我收到的新错误


当我运行 :sudo apt-get install apache2-dev 时,只要我输入 sudo make,它就会得到以下错误。

virtual-machine:~/Downloads/mod_wsgi-4.5.24$ sudo make 
/usr/bin/apxs2 -c -I/usr/include/python3.6m -DNDEBUG  -Wc,-g -Wc,-O2  src/server/mod_wsgi.c src/server/wsgi_*.c -L/usr/lib -L/usr/lib/python3.6/config-3.6m  -lpython3.6m -lpthread -ldl  -lutil -lm
/usr/share/apr-1.0/build/libtool --silent --mode=compile --tag=disable-static x86_64-linux-gnu-gcc -std=gnu99 -prefer-pic -pipe -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security  -D_FORTIFY_SOURCE=2   -DLINUX -D_REENTRANT -D_GNU_SOURCE  -pthread  -I/usr/include/apache2  -I/usr/include/apr-1.0   -I/usr/include/apr-1.0 -I/usr/include -g -O2 -I/usr/include/python3.6m -DNDEBUG  -c -o src/server/mod_wsgi.lo src/server/mod_wsgi.c && touch src/server/mod_wsgi.slo
In file included from src/server/mod_wsgi.c:22:0:
src/server/wsgi_python.h:24:20: fatal error: Python.h: No such file or directory
#include <Python.h>
^
compilation terminated.
apxs:Error: Command failed with rc=65536
.
make: *** [src/server/mod_wsgi.la] Error 1

I also tried this another machine, this time on ubuntu 16LTS and get a similar 
error message as shown below:
_________________________________________________________

2018] [mpm_event:notice] [pid 65824:tid 140243591341952] AH00491: caught
SIGTERM, shutting down [Tue Feb 27 14:49:42.462678 2018]
[mpm_event:notice] [pid 1366:tid 140394775304064] AH00489: Apache/2.4.18
(Ubuntu) configured -- resuming normal operations [Tue Feb 27
14:49:42.463290 2018] [core:notice] [pid 1366:tid 140394775304064]
AH00094: Command line: '/usr/sbin/apache2' [Tue Feb 27 14:55:49.361004
2018] [mpm_event:notice] [pid 1366:tid 140394775304064] AH00491: caught
SIGTERM, shutting down [Tue Feb 27 14:55:50.444530 2018] [wsgi:warn]
[pid 2393:tid 139752168679296] mod_wsgi: Compiled for Python/3.5.1+.
[Tue Feb 27 14:55:50.444616 2018] [wsgi:warn] [pid 2393:tid
139752168679296] mod_wsgi: Runtime using Python/3.5.2. [Tue Feb 27
14:55:50.445196 2018] [mpm_event:notice] [pid 2393:tid 139752168679296]
AH00489: Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/3.5.2 configured
-- resuming normal operations [Tue Feb 27 14:55:50.445223 2018]
[core:notice] [pid 2393:tid 139752168679296] AH00094: Command line:
'/usr/sbin/apache2' [Tue Feb 27 16:26:53.178835 2018] [mpm_event:notice]
[pid 2393:tid 139752168679296] AH00491: caught SIGTERM, shutting down
[Tue Feb 27 16:26:54.191342 2018] [mpm_event:notice] [pid 2972:tid
139914716534656] AH00489: Apache/2.4.18 (Ubuntu) configured -- resuming

从消息中的路径可以看出,您的mod_wsgi是为 Python 3.4 编译的。你尝试为 Django 运行的代码是 python3.6。

您需要重新安装针对要使用的 Python 3.X 版本编译mod_wsgi。

另请注意,您不能将针对一个 Python 版本编译mod_wsgi与另一个版本的 Python 虚拟环境一起使用。必须针对同一版本编译mod_wsgi。

mod_wsgi期239

转到此处下载最新的mod_wsgi,将其复制到您的服务器,运行:

tar xvfz mod_wsgi-X.Y.tar.gz
cd mod_wsgi-X.Y/
sudo ./configure --with-python=/usr/bin/python3.6
sudo make
sudo make install 
sudo nano /etc/apache2/mods-available/wsgi.load
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so # write this to wsgi.load file
sudo a2enmod wsgi 
sudo service apache2 restart

mod_wsgi不能同时运行djangopython3.4python3.6的项目,如果你之前有一些项目用python3.4运行,你需要更新它的虚拟环境来python3.6,因为django2.0(将在2019/03停止维护)是最后一个版本支持python3.4,将所有项目更新到python3.6是一个不错的选择,那都!


在 ubuntu 14.04、Apache 2.4.7、Django 2.0.2 上

这就是我安装 python3.6 的方式:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.6 python3.6-dev python3.6-venv

和 apache2:

sudo apt-get update
sudo apt-get install apache2 apache2-dev

使用以下命令创建虚拟环境:

python3.6 -m venv environment

最新更新