pyinstaller打包前运行正常,打包后运行报错(已解决):Exception: Failed to import an ElementTree implementation

目录

 备注:1.生成spec文件

2.使用spec文件进行打包 


因为我的程序中导入了xlrd1.2.0版本,经测试使用最新版本打包前运行就会报错,打包后从报错信息可以看出找不到模块。

 找到xlsx.py并打开,找出报错信息(51行),结合上下文可以看出找不到模块。解决办法:在spec文件中引入相关的包,在我看来应该是上图报错中的包引入一个就能解决问题,经验证可行。

我最先找到lxml,在spec文件中datas下添加lxml路径,再次打包后正常。改完spec文件后再次打包请使用备注:2.使用spec文件进行打包中命令进行打包。

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


block_cipher = None


a = Analysis(
    ['D:\\project\\Singapore\\interface.py'],
    pathex=[],
    binaries=[('D:\\software\\python3.8\\Lib\\site-packages\\ddt.py','.')],
    datas=[('D:\\project\\Singapore\\data','data'),('D:\\project\\Singapore\\icon','icon'),
    ('D:\\software\\python3.8\\Lib\\\site-packages\\xlrd','xlrd'),
    ('D:\\software\\python3.8\\Lib\\\site-packages\\lxml','lxml')],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='Singapore',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon=['test.ico'],
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='Singapore',
)

 备注:1.生成spec文件

pyinstaller name.py

通过上述命令能生成原始的spec文件,name为生成程序界面的文件名(程序入口文件名)。

2.使用spec文件进行打包 

pyinstaller name.spec

修改spec文件后通过上述命令进行打包可以将指定的模块打包进去。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当使用PyInstaller打包Python脚本时,有时会出现"ImportError: numpy.core.multiarray failed to import"错误。这个错误通常是由于PyInstaller打包过程中无法正确导入NumPy库的multiarray模块引起的。这可能是由于PyInstaller没有正确处理NumPy库的依赖关系导致的。 解决这个问题有几种方法可以尝试: 方法1: 在.spec文件中添加对NumPy库的引用 通过编辑生成的.spec文件,可以手动添加对NumPy库的引用。在.spec文件的"hiddenimports"部分,添加一行"numpy.core.multiarray",然后重新运行PyInstaller命令进行打包。 方法2: 使用--hidden-import参数指定隐藏的导入 在运行PyInstaller命令时,可以使用--hidden-import参数来指定隐藏的导入。例如,可以运行以下命令: ``` pyinstaller --hidden-import=numpy.core.multiarray your_script.py ``` 方法3: 更新NumPy库 尝试更新NumPy库到最新版本,有时这可以解决导入错误的问题。可以使用以下命令升级NumPy库: ``` pip install --upgrade numpy ``` 方法4: 检查环境变量和路径设置 确保您的环境变量和路径设置正确,以便Python可以找到正确的NumPy库。检查您的Python环境变量和路径设置,并确保它们指向正确的NumPy库的位置。 根据您的具体情况,尝试以上几种方法中的一种或多种,应该可以解决"ImportError: numpy.core.multiarray failed to import"错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ImportError: numpy.core.multiarray failed to import [cv2, matplotlib, PyTorch, pyinstaller ]](https://blog.csdn.net/zhongkeyuanchongqing/article/details/126217893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [报错ImportError: numpy.core.multiarray failed to import in cv2 / matplotlib / pyinstaller / pytorch](https://blog.csdn.net/weixin_46378710/article/details/127336185)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值