我试图在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
答案 0 :(得分:1)
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中删除软件包名称。 这种方法解决了我的问题[快乐编码:]]