PyInstaller打包exe后无Python环境运行报PssQuerySnapshot入口点缺失错误求助
问题描述
使用PyInstaller打包Python脚本为单文件exe,执行命令:
pyinstaller --onefile sql.py
编译机器上运行正常,但移至未安装Python的Windows电脑时,报错:
Entry Point Not Found : The procedure entry point PssQuerySnapshot could not be located in the dynamic link library C:...\python312.dll
环境信息:
- Windows平台
- Python 3.12.0
- 已安装包列表:
altgraph==0.17.4 packaging==23.2 pefile==2023.2.7 pyinstaller==6.1.0 pyinstaller-hooks-contrib==2023.10 pymssql==2.2.10 pywin32-ctypes==0.2.2 setuptools==68.2.2
解决办法
- 降级Python版本:Python 3.12属于较新版本,PyInstaller对其适配存在兼容性问题。建议降级到Python 3.11.x系列(如3.11.6),该版本生态适配更成熟,重新打包后可解决多数依赖加载问题。
- 调整打包参数:
- 改用文件夹模式打包,避免单文件解压时的依赖加载异常:
将生成的整个pyinstaller sql.pydist文件夹复制到目标机器运行。 - 强制收集所有依赖文件,确保pymssql相关库被完整打包:
pyinstaller --onefile --collect-all pymssql sql.py
- 改用文件夹模式打包,避免单文件解压时的依赖加载异常:
- 替换数据库驱动:pymssql 2.2.10对Python 3.12的支持不足,尝试换成
pyodbc库(执行pip install pyodbc),修改脚本中的数据库连接逻辑后重新打包。 - 检查目标系统版本:
PssQuerySnapshot是Windows 8.1及以上系统才有的API,若目标机器为Windows 7或更早版本,需升级系统至Windows 8.1/10/11才能兼容Python 3.12的运行时。
内容的提问来源于stack exchange,提问作者Jordan Hristov
相关产品推荐
相关产品推荐

