Werkzeug 属性错误: 'module' 对象没有 'InteractiveInterpreter' 属性

14 投票
2 回答
16534 浏览
提问于 2025-04-17 04:55

我在使用Flask(0.8)和Werkzeug(0.8.1)时,尝试用app.run(debug=True)运行代码,结果遇到了下面描述的错误。而用app.run()则没有任何错误。

错误信息

Traceback (most recent call last):
File "code2.py", line 9, in <module>
    app.run(debug=True)
File "/<snip>/env/lib/python2.7/site-packages/Flask-0.8-py2.7.egg/flask/app.py", line 703, in run
    run_simple(host, port, self, **options)
File "/<snip>/env/lib/python2.7/site-packages/Werkzeug-0.8.1-py2.7.egg/werkzeug/serving.py", line 587, in run_simple
    from werkzeug.debug import DebuggedApplication
File "/<snip>/env/lib/python2.7/site-packages/Werkzeug-0.8.1-py2.7.egg/werkzeug/debug/__init__.py", line 14, in <module>
    from werkzeug.debug.tbtools import get_current_traceback, render_console_html
File "/<snip>/env/lib/python2.7/site-packages/Werkzeug-0.8.1-py2.7.egg/werkzeug/debug/tbtools.py", line 19, in <module>
    from werkzeug.debug.console import Console
File "/<snip>/env/lib/python2.7/site-packages/Werkzeug-0.8.1-py2.7.egg/werkzeug/debug/console.py", line 144, in <module>
    class _InteractiveConsole(code.InteractiveInterpreter):
AttributeError: 'module' object has no attribute 'InteractiveInterpreter'

代码(code.py)

from flask import Flask
app = Flask(__name__)

@app.route('/news/')
def news():
    pass

if __name__ == '__main__':
    app.run(debug=True)

重现这个错误的步骤

$ cd <project directory>
$ . env/bin/activate # Activates virtuanlenv environment (see below for packages)
$ python code.py

我在虚拟环境中,env/lib/python2.7/site-packages里的各种库的版本信息

Flask-0.8-py2.7.egg
Jinja2-2.6-py2.7.egg
pip-1.0.2-py2.7.egg
setuptools-0.6c11-py2.7.egg
Werkzeug-0.8.1-py2.7.egg

到目前为止,我尝试过的一些解决方法,但都没有帮助(真遗憾)

  • 大量在网上搜索和查找相关问题
  • 大幅简化我的代码
  • 删除创建的虚拟环境和所有库,然后通过easy_install重新安装

奇怪的是,昨晚这段代码运行得很好。今天早上,没做任何我知道的更改,这段代码就无法正常运行了。

非常感谢你的帮助!

2 个回答

0

解决你问题的关键在于你的文件名;不要把你的Python文件命名为 code.pymain.pyFlask.pyos.pysystem.py。相反,你可以用 code1.py 或其他名字。

41

问题在于你把你的模块命名为 code.py。其实 code 是一个Python自带的模块,werkzeug这个库会用到它(https://docs.python.org/3/library/code.html)。

要解决这个问题,你需要把 code.py 改个名字,并且确保删除 code.pyc 这个文件。

撰写回答