Pyarmor打包运行报错,找不到指定程序,如何解决?

用pyarmor打包py文件,打包后运行exe报错
ImportError: DLL load failed: 找不到指定的程序

Traceback (most recent call last):
  File "", line 3, in 
  File "", line 20, in 
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "", line 1, in 
  File "", line 5, in 
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "", line 1, in 
  File "", line 5, in 
  File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
  File "", line 1, in 
  File "", line 12, in 
ImportError: DLL load failed: 找不到指定的程序。
[9336] Failed to execute script 'test' due to unhandled exception!

尝试过重新打包,确定打包步骤正确
复制pyzbar和一些依赖里的dll文件,都无效

求解答

望采纳


这个错误通常是由于在打包时使用的Python环境与在运行时使用的Python环境不一致导致的。例如,在打包时使用的Python环境是64位的,但在运行时使用的Python环境是32位的,这样就会导致找不到指定的程序的错误。

为了解决这个问题,可以尝试以下几种方法:

  • 使用相同的Python环境进行打包和运行,这样可以避免Python环境不一致导致的错误。
  • 在打包时指定打包时使用的Python环境的路径,例如:pyarmor pack --onefile --entry main.py --python C:\Python37\python.exe,这样就可以在不同的Python环境下打包和运行。
  • 在运行时指定运行时使用的Python环境的路径,例如:C:\Python37\python.exe test.exe,这样就可以在不同的Python环境下打包和运行。

这个很有可能是pyarmor与你用到的python库不兼容。

检查下你的所使用的库。

可以降低、或者升级相应库的版本。

ImportError: DLL load failed: 找不到指定的程序。
[9336] Failed to execute script 'test' due to unhandled exception!

报错的含义:
ImportError:DLL加载失败:找不到指定的程序。
[9336]由于未处理的异常,无法执行脚本“测试”!

这类原因较多,但大多是这种情况:
1、Pyarmor打包的环境和实际代码运行的环境不一样  
2、函数库本身有问题,导致调用异常。
3、依赖包版本不符,导致调用异常。
解决方法
1、将打包环境和运行代码环境配置统一,注意路径不要含中文、空格等特殊字符情况
2、重新安装该函数库。
3、检查该依赖包的版本(过高或过低)。

是不是找不到路径名

pyimod02_importers.py程序499行具体是哪个dll找不到?,你是使用全路径了吗?

在打包的时候需要确定打包的环境和实际运行的环境是否一致,如果不一致可能会出现上述的错误。

你可以尝试在打包的时候使用「--hidden-import」参数将依赖的模块列举出来,再尝试打包。例如:

pyarmor pack --hidden-import=pyzbar --hidden-import=xlib  test.py

如果还是不行,可以尝试在打包的时候使用「--debug」参数来查看更详细的错误信息,再根据提示信息来修改。

此外,你也可以尝试在打包的时候使用「--onefile」参数,将所有的文件打包到一个文件中,这样可以避免一些文件丢失的问题。例如:

pyarmor pack --onefile --hidden-import=pyzbar --hidden-import=xlib  test.py

希望以上信息能够帮助你解决问题。如果还有疑问,可以再提出来,我会尽力帮助你解决。