from sklearn.XXX import XXXXXX 程序打包无法正常运行

1. 报错和截图如下:

Traceback (most recent call last):
  File "RsrpLimitGUI222.py", line 7, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "abnormal_process_and_saveresult.py", line 4, in <module>
    from sklearn.ensemble import IsolationForest
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "sklearn\__init__.py", line 84, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "sklearn\base.py", line 19, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "sklearn\utils\__init__.py", line 11, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "sklearn\utils\_chunking.py", line 8, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "sklearn\utils\_param_validation.py", line 11, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "scipy\sparse\__init__.py", line 293, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "scipy\sparse\_base.py", line 5, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "scipy\sparse\_sputils.py", line 10, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "scipy\_lib\_util.py", line 18, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "scipy\_lib\_array_api.py", line 21, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "scipy\_lib\array_api_compat\numpy\__init__.py", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "numpy\f2py\__init__.py", line 19, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "numpy\f2py\f2py2e.py", line 23, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "numpy\f2py\crackfortran.py", line 159, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "numpy\f2py\auxfuncs.py", line 19, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_module
  File "numpy\f2py\cfuncs.py", line 19, in <module>
AttributeError: 'NoneType' object has no attribute 'write'

在这里插入图片描述

2.原因:

我代码中导入了sklearn部分库,可能 pyinstaller 未自动打包进去,需要手动添加一下。
AttributeError: ‘NoneType’ object has no attribute ‘write’ 表示在加载某些模块时出现了问题,通常是因为某个依赖项未正确打包或加载。在这种情况下,可能是由于 numpy 或 scipy 中的某些子模块未正确包含。

3. 解决:

在XXX.spec文件中hiddenimports增加可能依赖的包文件,确保 numpy 和 scipy 的相关子模块都被包含,重新打包即可。
XXX.spec文件如下所示

# -*- mode: python ; coding: utf-8 -*-


a = Analysis(
    ['RsrpLimitGUI222.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[
        'scipy._lib.array_api_compat.numpy.fft',
        'scipy._lib._array_api_compat',
        'scipy._lib._array_api',
        'scipy._lib',
        'scipy',
        'scipy.sparse',
        'scipy.sparse._csr',  # 添加此行
        'scipy.sparse._csc',  # 添加此行
        'scipy.linalg',  # 添加此行
        'numpy',
        'numpy.f2py.cfuncs',
        'numpy.f2py.auxfuncs',
        'numpy.f2py.crackfortran',
        'numpy.f2py.f2py2e',
        'numpy.f2py.auxfuncs',
        'numpy.f2py.cfuncs',
        'numpy.linalg',  # 添加此行
        'sklearn.svm',
        'sklearn.ensemble',
        'sklearn.neighbors',
        'sklearn.cluster',
        'sklearn.utils._cython_blas',
        'sklearn.utils.sparsefuncs_fast',
        'sklearn.tree',
        'sklearn.utils',
        'threading',
    ],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
)

pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='RsrpLimitGUI222',
    debug=True,  # 启用调试
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,  # 打开控制台以查看输出
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果使用 `pyinstaller -F xxx.py` 命令打包Python程序后,程序无法正常执行,可以尝试以下方法进行排查: 1. 确认程序是否有依赖库。如果程序使用了一些第三方库,可能需要在打包程序时将这些库一起打包。可以使用 `--hidden-import` 参数将依赖库添加到可执行文件中,例如 `pyinstaller -F --hidden-import=module1 --hidden-import=module2 xxx.py`。 2. 检查打包程序时是否出现了错误信息。在打包程序时,可能会出现一些警告或者错误信息,需要注意查看并解决这些问题。可以查看打包程序时的输出信息,看是否有错误信息输出。 3. 检查程序是否有输入输出。如果程序需要输入一些参数或者文件路径,可能需要在打包程序时将这些参数或者文件路径一起打包,并在程序中读取这些参数或者文件路径。需要注意,程序打包后的路径可能与程序源码中的路径不同。 4. 确认程序是否与操作系统兼容。有些程序可能在不同的操作系统下表现不同,需要确认程序是否与目标操作系统兼容。 5. 确认程序是否有权限运行。在某些情况下,可能需要以管理员身份运行程序,或者修改程序的权限以便能够运行。可以尝试修改程序的权限或者以管理员身份运行程序。 需要注意的是,在排查问题时需要谨慎操作,并备份好重要的数据,以免引起其他问题。如果以上方法都无法解决问题,可以提供更多的信息,以便更好地定位问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值