1. 报错和截图如下:
Traceback (most recent call last):File "RsrpLimitGUI222.py", line 7, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "abnormal_process_and_saveresult.py", line 4, in <module>from sklearn.ensemble import IsolationForestFile "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "sklearn\__init__.py", line 84, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "sklearn\base.py", line 19, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "sklearn\utils\__init__.py", line 11, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "sklearn\utils\_chunking.py", line 8, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "sklearn\utils\_param_validation.py", line 11, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "scipy\sparse\__init__.py", line 293, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "scipy\sparse\_base.py", line 5, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "scipy\sparse\_sputils.py", line 10, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "scipy\_lib\_util.py", line 18, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "scipy\_lib\_array_api.py", line 21, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "scipy\_lib\array_api_compat\numpy\__init__.py", line 1, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "numpy\f2py\__init__.py", line 19, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "numpy\f2py\f2py2e.py", line 23, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "numpy\f2py\crackfortran.py", line 159, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "numpy\f2py\auxfuncs.py", line 19, in <module>File "<frozen importlib._bootstrap>", line 1360, in _find_and_loadFile "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 935, in _load_unlockedFile "PyInstaller\loader\pyimod02_importers.py", line 378, in exec_moduleFile "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,
)