无法导入markdown,因COMMAND_LINE_LOGGING_LEVEL问题

3 投票
2 回答
2074 浏览
提问于 2025-04-16 07:34

我遇到了一个奇怪的错误。在Python中我可以导入markdown,也可以在Django的运行服务器中导入markdown,但当我在gunicorn的应用服务器中尝试导入markdown时,却出现了以下错误。

* ImportError: 无法导入名称 COMMAND_LINE_LOGGING_LEVEL

这让我更加困惑,因为我只在markdown(或者我使用的任何代码)中找到了一处提到COMMAND_LINE_LOGGING_LEVEL的地方——在markdown的init.py文件中定义的那一行,我把它注释掉了,但错误依然存在。

有没有什么想法?

2 个回答

2

我通过把whatever/bin里的markdown.py文件的后缀.py去掉,解决了这个错误。这样做显然是为了避免它自己导入自己,而不是从site-packages里导入markdown模块。

2

Gunicorn这个东西,我还不太明白为什么,它会把虚拟环境中的bin目录加到系统路径里。Markdown在这个bin目录里安装了一个叫markdown.py的文件。这个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]

撰写回答