使用Python打包Python脚本时出现问题:“无法加载ViGEmClient.dll”

lrpiutwd  于 6个月前  发布在  Python
关注(0)|答案(1)|浏览(104)

bounty将在7天后过期。回答此问题可获得+50声望奖励。FrostDream希望引起更多关注此问题。

我在使用Python打包我的Python脚本时遇到了一个问题。该脚本使用了'vgamepad'库,虽然它在Python中成功运行,但在尝试使用Python创建独立的可执行文件时遇到了以下错误:

Failed to load dynlib/dll 'C:\Users\google\AppData\Local\Temp\_MEI150362\vgamepad\win\vigem\client\x64\ViGEmClient.dll'.
Most likely, this dynlib/dll was not found when the application was frozen.

字符串
与常见的建议相反,我无法在我的项目目录或系统上的其他地方找到“ViGEmClient.dll”文件。

相关编码:

try:
    import vgamepad
except Exception as e:
    input(e)

环境:

  • 操作系统:Windows 10
  • Python版本:3.12.0
  • Python版本:6.3.0
  • vgamepad版本:0.1.0

我一直无法找到'ViGEmClient.dll'文件在类似的情况下建议.任何关于定位或解决此依赖关系问题的指导将不胜感激.谢谢!

5ssjco0h

5ssjco0h1#

正如评论部分所述,您可以从vgamepad's Github repo下载缺少的.dll
即使我的代码只导入vgamepad,我也会得到这个错误。我的pyinstaller命令很简单:pyinstaller my_script.py --onefile
这是因为Python不会将丢失的.dll文件复制到独立的可执行文件中,所以可执行文件无法找到该.dll文件。您需要告诉Python复制您的.dll文件:

pyinstaller --onefile --add-binary "ViGEmClient.dll:vgamepad\win\vigem\client\x64" my_script.py

字符串
在本例中,ViGEmClient.dll与my_script.py位于同一个文件夹中,您的路径可能会有所不同。

相关问题