【问题标题】:Error while configuring Django with mod_wsgi on Python inside Anaconda: "ImportError: No module named django.core.wsgi"在 Anaconda 内部的 Python 上使用 mod_wsgi 配置 Django 时出错:“ImportError: No module named django.core.wsgi”
【发布时间】:2015-03-09 10:42:57
【问题描述】:

我在 ubuntu 上运行 django+apache2 时遇到了一些问题。 Django 1.7、Apache2.4.7

我在 python 2 上运行以 3.4 为主 + 另一个环境的 anaconda 堆栈

我试图建立简单的测试站点并收到内部错误 500,Apache 的错误日志中有以下错误消息:

[Sat Jan 10 11:56:16.095032 2015] [:error] [pid 14441:tid 140015774267136] [client 127.0.0.1:59135] ImportError: No module named django.core.wsgi
[Sat Jan 10 12:03:01.895432 2015] [:error] [pid 14439:tid 140015774267136] [client 127.0.0.1:59157] mod_wsgi (pid=14439): Target WSGI script '/PATH/mysite/wsgi.py' cannot be loaded as Python module.
[Sat Jan 10 12:03:01.895483 2015] [:error] [pid 14439:tid 140015774267136] [client 127.0.0.1:59157] mod_wsgi (pid=14439): Exception occurred processing WSGI script '/PATH/mysite/wsgi.py'.
[Sat Jan 10 12:03:01.895498 2015] [:error] [pid 14439:tid 140015774267136] [client 127.0.0.1:59157] Traceback (most recent call last):
[Sat Jan 10 12:03:01.895515 2015] [:error] [pid 14439:tid 140015774267136] [client 127.0.0.1:59157]   File "/PATH/mysite/wsgi.py", line 13, in <module>
[Sat Jan 10 12:03:01.895565 2015] [:error] [pid 14439:tid 140015774267136] [client 127.0.0.1:59157]     from django.core.wsgi import get_wsgi_application
[Sat Jan 10 12:03:01.895582 2015] [:error] [pid 14439:tid 140015774267136] [client 127.0.0.1:59157] ImportError: No module named django.core.wsgi

wsgi.py:

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

运行正常

python manage.py runserver

所以这里的问题是(我认为)mod-wsgi 没有在正确的 python 上配置,因为默认 python 是(“mod_wsgi/3.4 Python/2.7.6 已配置”)并且 django 安装在 anaconda 2.7.9 上.

如果我的猜测是正确的(请让我知道我们还需要什么其他信息来进行灵魂检测) 我的问题是:如何重新编译 mod-wsgi 使其与 anaconda 的 2.7.9 环境相关联? 另一个问题是,我可以保持原样并添加一些指令以链接到 anaconda 库吗?那个文件夹是那个文件夹,然后我应该把 WSGIPythonHome 指令放在哪里?

感谢您的观看

【问题讨论】:

  • 请包含您的 mysite/wsgi.py 的内容。

标签: python django apache anaconda wsgi


【解决方案1】:

有类似的问题,答案在虚拟主机文件中:

WSGIDaemonProcess mysite python-path=/path/to/mysite:/path/to/anaconda3/envs/python2/lib/python2.7/site-packages/
WSGIProcessGroup mysite
WSGIScriptAlias / /path/to/mysite/mysite/wsgi.py

ServerName www.mysite.com
ServerAlias mysite.com
ServerAdmin webmaster@mysite.com

<Directory /path/to/mysite/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

ErrorLog /path/to/web/test/error.log

【讨论】:

  • “虚拟主机文件”是什么意思?
【解决方案2】:

在您的 Apache 的 httpd.conf 中检查此设置:
在您的&lt;VirtualHost x:y&gt; 部分中,确保WSGIDaemonProcesspython-path 的值包括Anaconda 安装中的Python 站点包目录
否则,mod_wsgi 可能找不到您为 Python 在 Anaconda 中安装的 Django。

例如,如果您已将 Anaconda 安装到: /opt/anaconda2
Python 站点包目录可能是: /opt/anaconda2/lib/python2.7/site-packages
因此,将WSGIDaemonProcess改为:
WSGIDaemonProcess YOUR_PROJECT_NAME python-path=/opt/anaconda2/lib/python2.7/site-packages:YOUR_PROJECT_DIRECTORY ......
(每个路径用冒号分隔:

注意:
1. 路径中的版本号可能会根据您的工具版本而变化。请找到类似的路径并尝试一下。
2. 这个问题可能发生在每个 Linux 发行版上(不仅是 Ubuntu),甚至是 Windows。

【讨论】:

  • 如果在您不使用 Python 虚拟环境的情况下需要这样做,则意味着您遇到了更大的问题。也就是说,这意味着您的 mod_wsgi 不是针对 Anaconda Python 安装编译的,而是针对系统 Python 版本编译的。您不应将针对一个 Python 发行版/版本编译的 mod_wsgi 与来自另一个 Python 安装的文件或针对不同安装或版本创建的虚拟环境一起使用。
猜你喜欢
  • 2012-12-21
  • 2017-03-03
  • 2017-09-05
  • 2015-09-10
  • 2017-09-16
  • 2012-08-24
  • 2015-01-15
  • 1970-01-01
  • 2011-04-04
相关资源
最近更新 更多