使用PyInstaller打包Python脚本时加载ViGEmClient.dll失败求助
解决PyInstaller打包vgamepad时缺失ViGEmClient.dll的问题
1. 定位ViGEmClient.dll的位置
首先找到Python的vgamepad库安装目录:
- 打开命令行,执行:
输出里的pip show vgamepadLocation字段就是库的安装路径(示例:C:\Users\google\AppData\Local\Programs\Python\Python312\Lib\site-packages)。 - 进入该路径下的
vgamepad\win\vigem\client\x64\目录,正常情况下这里应该存在ViGEmClient.dll。如果确实没有,说明库安装不完整,重新执行pip install --force-reinstall vgamepad重新安装。
2. 让PyInstaller打包时包含该DLL
有两种方式实现:
方式一:使用命令行参数
打包时直接通过--add-data指定要包含的文件,Windows环境下路径用分号分隔源文件和目标位置:
pyinstaller --add-data "C:\实际路径\ViGEmClient.dll;vgamepad/win/vigem/client/x64/" your_script.py
替换C:\实际路径\ViGEmClient.dll为你找到的dll真实路径。
方式二:修改.spec文件
- 先生成默认的spec文件:
pyinstaller your_script.py - 打开生成的
your_script.spec,找到datas列表,添加以下内容:datas=[('C:\\实际路径\\ViGEmClient.dll', 'vgamepad/win/vigem/client/x64')], - 再用spec文件重新打包:
pyinstaller your_script.spec
3. 若重新安装仍找不到DLL的备选方案
如果重新安装vgamepad后还是没有ViGEmClient.dll,可以手动获取对应x64版本的ViGEmClient.dll,将其放到Python site-packages下的vgamepad\win\vigem\client\x64\目录中,再执行上述打包步骤。
内容的提问来源于stack exchange,提问作者FrostDream
相关产品推荐
相关产品推荐

