Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django/Apache/mod_wsgi:没有名为importlib的模块_Django_Apache_Deployment_Mod Wsgi_Virtualenv - Fatal编程技术网

Django/Apache/mod_wsgi:没有名为importlib的模块

Django/Apache/mod_wsgi:没有名为importlib的模块,django,apache,deployment,mod-wsgi,virtualenv,Django,Apache,Deployment,Mod Wsgi,Virtualenv,在与django的开发服务器合作了两个月之后,终于到了转向apache+mod_wsgi的时候了 问题是,当我访问我的站点(我们称之为junux)到映射到django应用程序的URL时,事情似乎不起作用。在服务器上运行dev服务器时,一切正常 apache错误日志中给出了错误的底线: ImportError:无法导入设置“junux_site.settings”(是否打开) 系统路径?:没有名为importlib的模块 我知道这与许多其他问题类似(有太多问题,我甚至不在这里引用),但我仍然没有找

在与django的开发服务器合作了两个月之后,终于到了转向apache+mod_wsgi的时候了

问题是,当我访问我的站点(我们称之为junux)到映射到django应用程序的URL时,事情似乎不起作用。在服务器上运行dev服务器时,一切正常

apache错误日志中给出了错误的底线:

ImportError:无法导入设置“junux_site.settings”(是否打开) 系统路径?:没有名为importlib的模块

我知道这与许多其他问题类似(有太多问题,我甚至不在这里引用),但我仍然没有找到答案。我已经阅读了很多关于进入生产的指南,包括django的部署文档、mod_wsgi的指南、一些pycon演示,并且整天都在谷歌上搜索这个问题

下面有很多有趣和激动人心的细节

任何帮助都将不胜感激。 提前谢谢


配置:

  • 在CentOS 6上使用mod_wsgi的Apache 2.2.15
  • 从源代码编译的Python 2.7.3
  • 该网站使用了virtualenv
这是apache返回的错误页面:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Apache/2.2.15 (CentOS) Server at junux.net Port 80
apache
错误日志
显示以下信息:

mod_wsgi (pid=22502): Create interpreter 'junux.net|/dev'.
mod_wsgi (pid=22502): Exception occurred processing WSGI script '/var/www/junux_dev/junux_site/wsgi.py'.
Traceback (most recent call last):
  File "/var/www/junux_dev/venv/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 219, in __call__
    self.load_middleware()
  File "/var/www/junux_dev/venv/lib/python2.7/site-packages/django/core/handlers/base.py", line 39, in load_middleware
    for middleware_path in settings.MIDDLEWARE_CLASSES:
  File "/var/www/junux_dev/venv/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner
    self._setup()
  File "/var/www/junux_dev/venv/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup
    self._wrapped = Settings(settings_module)
  File "/var/www/junux_dev/venv/lib/python2.7/site-packages/django/conf/__init__.py", line 95, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'junux_site.settings' (Is it on sys.path?): No module named importlib
相关的
wsgi.py

import os
import sys
import site

# use our virtual environment
SITE_DIR = os.path.dirname(__file__)
PROJECT_ROOT = os.path.dirname(SITE_DIR)
site_packages = os.path.join(PROJECT_ROOT, 'venv/lib/python2.7/site-packages')
site.addsitedir(os.path.abspath(site_packages))
sys.path.insert(0, SITE_DIR)
sys.path.insert(1, PROJECT_ROOT)

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "junux_site.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
httpd.conf
: (更多信息来自默认的apache配置文件)


ServerName junux.net
ServerAlias junux.net
服务器管理员admin@junux.net
WSGIScriptAlias/test/var/www/test/hello.py
WSGIScriptAlias/dev/var/www/junux_dev/junux_site/wsgi.py
命令允许,拒绝
通融
选项如下符号链接
命令允许,拒绝
通融
日志级别信息
/test
中有一个
WSGIScriptAlias
来提供一个检查mod_wsgi是否确实有效的健全性检查。是的。打开该URL时(非常简单)应用程序工作(典型的hello world)


我已经在我的wsgi文件上设置了
chmod o+r
,并在整个
/var/www/junux\u dev
目录上设置了
chmod o+rx
权限,如pycon-sydney-2010演示文稿中所述。

编译wsgi时使用的Python版本是什么?看起来您可能在系统上安装了多个Python,并且您的虚拟环境使用的是Python 2.7,但是您的mod_wsgi是根据2.6编译的

我的猜测是基于这样一个事实,即importlib只是在Python2.7中添加的,因此,如果mod_wsgi是针对2.6编译的,并且使用该基本安装,那么将无法找到importlib

运行检查:


抓得好!事实证明,apache绑定到了CentOS 6(2.6.6)默认附带的python,而不是我编译的python(2.7.3)。另外,我从
yum
安装了mod_wsgi(3.2),这可能给了我与默认python包兼容的版本,因此不符合我尝试使用的2.7.3。关闭以再次设置python并重新编译mod_wsgi。。。非常感谢。
<VirtualHost *:80>
        ServerName junux.net
        ServerAlias junux.net
        ServerAdmin admin@junux.net

        WSGIScriptAlias /test /var/www/test/hello.py
        WSGIScriptAlias /dev /var/www/junux_dev/junux_site/wsgi.py

        <Directory /var/www/test >
        Order allow,deny
        Allow from all
        </Directory>

        <Directory /var/www/junux_dev >
        Options FollowSymLinks
        Order allow,deny
        Allow from all
        </Directory>

</VirtualHost>

LogLevel info