我有一个奇怪的错误,我可以在Python中导入markdown,我可以在Django runserver中的python中导入markdown,但是当我尝试在gunicorn的app服务器中导入markdown时我得到以下内容。
* ImportError:无法导入名称COMMAND_LINE_LOGGING_LEVEL
这更令人困惑,因为我找到唯一一个在markdown(或我正在使用的任何代码)中引用COMMAND_LINE_LOGGING_LEVEL的地方 - 在markdown init 中定义它的一行.py,我评论了一下。我仍然得到这个错误。
有什么想法吗?
答案 0 :(得分:2)
Gunicorn,由于我还不了解的原因,将virtualenv / bin目录添加到sys.path中。 Markdown将markdown.py安装到该bin目录中。 markdown.py尝试从markdown库中导入COMMAND_LINE_LOGGING_LEVEL。这导致循环失败。
我不知道为什么Gunicorn这样做,可能不应该这样做。我的便利修复是将以下内容添加到服务器的local_settings.py
import sys
for i, path in enumerate(sys.path):
if path.endswith('bin'):
del sys.path[i]
答案 1 :(得分:2)
我通过从/ bin中的markdown.py中删除.py扩展名来修复此错误。这显然阻止了它自己导入而不是站点包中的markdown模块。