You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行flask_restful编写的API时遇ImportError:无法导入opcode的__all__

问题:ImportError: cannot import name 'all' from opcode

编写的API代码

from flask_restful import Resource, request


class UploadFile(Resource):

    def get(self):
        pass

    def post(self):
        is_header_present(request.headers, "User-Agent", None)


def is_header_present(headers, search_term, correct_variable):
    for header in headers.keys():
        print(header)

API运行代码

from flask import Flask
from flask_restful import Api
from lib.api import UploadFile

app = Flask(__name__)
api = Api(app)
api.add_resource(UploadFile, "/cas", methods=["GET", "POST"])
app.run(
    host="127.0.0.1", port=6823
)

运行错误日志

Traceback (most recent call last):
  File "cas.py", line 262, in <module>
    from flask import Flask
  File "/home/sal/.local/lib/python3.6/site-packages/flask/__init__.py", line 16, in <module>
    from werkzeug.exceptions import abort
  File "/home/sal/.local/lib/python3.6/site-packages/werkzeug/__init__.py", line 15, in <module>
    from .serving import run_simple
  File "/home/sal/.local/lib/python3.6/site-packages/werkzeug/serving.py", line 50, in <module>
    from ._internal import _log
  File "/home/sal/.local/lib/python3.6/site-packages/werkzeug/_internal.py", line 11, in <module>
    import inspect
  File "/usr/lib/python3.6/inspect.py", line 36, in <module>
    import dis
  File "/usr/lib/python3.6/dis.py", line 9, in <module>
    from opcode import __all__ as _opcodes_all
ImportError: cannot import name '__all__'

环境信息

  • Python版本:3.6.9
  • 安装的库版本:
    • Flask==2.0.3
    • Flask-RESTful==0.3.9
    • Werkzeug==2.0.3

已尝试重装相关库、重装Python,问题仍存在,求修复方案。


修复方案

这个错误的核心原因是系统中存在自定义的opcode.py文件,覆盖了Python标准库的opcode模块。Python导入模块时,会优先搜索当前工作目录和PYTHONPATH中的文件,而非标准库路径。

具体步骤:

  1. 检查模块搜索路径中的自定义文件
    执行以下命令查看Python的模块搜索路径:

    python3 -c "import sys; print('\n'.join(sys.path))"
    

    检查输出的路径列表中是否存在opcode.py或opcode.pyc文件,重点关注当前工作目录(路径列表的第一个位置)。

  2. 处理冲突文件
    找到非标准库的opcode.py/opcode.pyc后,直接将其重命名(例如改为custom_opcode.py)或删除,避免与标准库模块冲突。

  3. 验证修复效果
    重新运行API代码,若错误消失则问题已解决。

额外排查方向:

如果未找到上述文件,可执行以下命令确认实际导入的opcode模块路径:

python3 -c "import opcode; print(opcode.__file__)"

正常情况下路径应为标准库路径(类似/usr/lib/python3.6/opcode.py)。若输出为自定义路径,直接处理该路径下的文件即可。


内容的提问来源于stack exchange,提问作者user12969777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:20:34