ImportError:无法导入名称NullHandler

时间:2014-11-14 21:42:10

标签: python django python-2.7 elastic-beanstalk

我试图在Elastic Beanstalk上部署一个hello-world类型的应用程序。几乎所有东西似乎都工作,包安装等等,直到mod_wsgi尝试检索"应用程序"来自wsgi.py的对象。此时,日志中会出现以下内容(每个不成功的HTTP请求在日志中出现一次):

mod_wsgi (pid=6114): Target WSGI script '/opt/python/current/app/myapp/wsgi.py' cannot be loaded as Python module.
mod_wsgi (pid=6114): Exception occurred processing WSGI script '/opt/python/current/app/myapp/wsgi.py'.
Traceback (most recent call last):
   File "/opt/python/current/app/caserails/wsgi.py", line 20, in <module>
     application = get_wsgi_application()
   File "/opt/python/run/venv/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
     django.setup()
   File "/opt/python/run/venv/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
     from django.utils.log import configure_logging
   File "/opt/python/run/venv/lib/python2.7/site-packages/django/utils/log.py", line 16, in <module>
     from logging import NullHandler  # NOQA
 ImportError: cannot import name NullHandler

Link to concurrent AWS Forum Post.

5 个答案:

答案 0 :(得分:1)

版本2.7中引入了

NullHandler。您确定在服务器上运行2.7吗?

答案 1 :(得分:1)

经过多次试验和错误后,通过从requirements.txt中删除python logging并重建环境来解决(立即)问题。

我还不完全明白为什么这是一个问题。在我的本地机器上,我能够安装日志并运行Django而不会出错。我怀疑vikramls指出mod_wsgi,执行mod_wsgi的baselineenv和我的应用程序运行的virtualenv之间的交集中发生了一些奇怪的事情。

但是,至少现在,我通过不包括&#34; logging&#34;来修复此错误。在Elastic Beanstalk上部署Django 1.7时,在requirements.txt中。

答案 2 :(得分:0)

我有类似的问题,在我的情况下问题是,对于一些不相关的项目,我在home文件夹中创建了logging.py文件,当我在家里运行时,它正在导入这个文件而不是真正的模块。

您可以像这样检查导入的文件:

mysqli_close($con);

我通过删除之前创建的logging.py来修复它。

答案 3 :(得分:0)

NullHandler仅适用于Python版本2.7+。您可以在NullHandler上自行创建ImportError

import logging

try:
    from logging import NullHandler
except ImportError:
    class NullHandler(logging.Handler):
        def emit(self, record):
            pass

logging.getLogger(__name__).addHandler(NullHandler())

有关logging.NullHandler的更多信息:https://docs.python.org/3/library/logging.handlers.html#logging.NullHandler

答案 4 :(得分:0)

在使用PyInstaller为python 2.7创建一个版本时遇到了这个问题。因此,我从ENV上卸载了logger,否则您也可以从require.txt中删除软件包名称。 这种方法解决了我的问题[快乐编码:]]