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

cx_freeze打包Python脚本为exe后出现NP_SUPPORTED_MODULES导入错误求助

问题

在VS Code中运行以下Python脚本完全正常:

try:
    import os
    from bs4 import BeautifulSoup as bs
    import xlsxwriter
    import sys,traceback
    import time,threading
    import PySimpleGUI as sg
    import requests
    import easyocr
    import certifi
    from datetime import datetime
    from pymongo import MongoClient
    from bson.objectid import ObjectId
except:
    sys.stderr = open('../error.log', 'a+',encoding='utf-8')
    traceback.print_exc()
    sys.stderr.close()

reader = easyocr.Reader(['en']) # this needs to run only once to load the model into memory

但使用cx_freeze打包为exe文件后,运行生成的exe时出现如下ImportError:

Traceback (most recent call last):
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\osos_adanaorganize_scraper.py", line 9, in <module>
    import easyocr
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\env\lib\site-packages\easyocr\__init__.py", line 1, in <module>
    from .easyocr import Reader
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\env\lib\site-packages\easyocr\easyocr.py", line 3, in <module>
    from .recognition import get_recognizer, get_text
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\env\lib\site-packages\easyocr\recognition.py", line 6, in <module>
    import torchvision.transforms as transforms
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\env\lib\site-packages\torchvision\__init__.py", line 6, in <module>
    from torchvision import _meta_registrations, datasets, io, models, ops, transforms, utils
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\osos-scraper-_win_application\lib\torchvision\models\__init__.py", line 2, in <module>
    from .convnext import *
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\osos-scraper-_win_application\lib\torchvision\models\convnext.py", line 8, in <module>
    from ..ops.misc import Conv2dNormActivation, Permute
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\env\lib\site-packages\torchvision\ops\__init__.py", line 23, in <module>
    from .poolers import MultiScaleRoIAlign
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\env\lib\site-packages\torchvision\ops\poolers.py", line 10, in <module>
    from .roi_align import roi_align
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\env\lib\site-packages\torchvision\ops\roi_align.py", line 4, in <module>
    import torch._dynamo
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\env\lib\site-packages\torch\_dynamo\__init__.py", line 2, in <module>
    from . import allowed_functions, convert_frame, eval_frame, resume_execution
  File "D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\env\lib\site-packages\torch\_dynamo\allowed_functions.py", line 30, in <module>
    from .utils import hashable, is_safe_constant, NP_SUPPORTED_MODULES
ImportError: cannot import name 'NP_SUPPORTED_MODULES' from 'torch._dynamo.utils' (D:\Developing\W.S-PROJECT\osos.adanaorganize.org.tr\osos-scraper-_win_application\lib\torch\_dynamo\utils.pyc)

解决方案

  • 降级PyTorch/TorchVision到稳定版本
    这个错误多因torch._dynamo模块的API变动导致,建议安装兼容性更好的稳定版本:

    pip install torch==2.0.1 torchvision==0.15.2 --force-reinstall
    

    安装完成后重新打包,大部分情况下能解决模块导入问题。

  • 修改cx_freeze配置排除不必要模块
    在你的setup.py中,添加排除torch._dynamo的配置,因为easyocr运行不需要该模块:

    from cx_Freeze import setup, Executable
    
    executables = [Executable("osos_adanaorganize_scraper.py")]
    
    setup(
        name="osos_scraper",
        version="1.0",
        description="Your scraper app",
        executables=executables,
        options={
            "build_exe": {
                "excludes": ["torch._dynamo"],
                "include_files": []  # 可添加easyocr需要的模型文件路径
            }
        }
    )
    

    注意:如果easyocr运行时需要预下载的模型,要把模型所在目录(通常在~/.EasyOCR/model)加到include_files里。

  • 更换打包工具为PyInstaller
    cx_freeze对PyTorch生态的支持不如PyInstaller完善,尝试用PyInstaller打包:

    1. 安装PyInstaller:
      pip install pyinstaller
      
    2. 生成spec文件(可选,方便配置):
      pyi-makespec osos_adanaorganize_scraper.py
      
    3. 修改spec文件,添加easyocr模型路径和必要的排除项:
      在datas中加入模型路径,比如:
      datas=[(r"C:\Users\YourUser\.EasyOCR\model", "model")]
      
      然后执行打包:
      pyinstaller osos_adanaorganize_scraper.spec
      
  • 手动补充缺失的变量定义
    如果以上方法都无效,可以找到你的虚拟环境中torch/_dynamo/utils.py文件,查看是否有NP_SUPPORTED_MODULES的定义,将其复制到打包后的utils.pyc对应的文件中(需要反编译pyc文件,操作较繁琐,不推荐作为首选)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:55:54