Python编译的exe在Windows Server 2016服务器启动崩溃报错求助
解决Windows Server 2016上Python监控应用启动崩溃问题
针对你遇到的RuntimeError: cannot call null pointer pointer from cdata 'int(*)(void *, int)'报错,这是pythonnet加载CLR时的依赖缺失或环境不一致问题,以下是具体解决步骤:
检查并同步.NET Framework版本
运行命令查看目标服务器的.NET版本:reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Version确保和正常运行的服务器版本一致,若低于4.7.2,升级到该版本或更高——pythonnet对.NET Framework有明确版本要求。
调整PyInstaller打包配置
打包时需明确指定pythonnet相关的隐藏导入,修改打包命令:pyinstaller --hidden-import=clr --hidden-import=pythonnet PIConnectorHealth.py或者编辑生成的
.spec文件,添加:hiddenimports=['clr', 'pythonnet']重新打包后部署到目标服务器。
修复VC++运行时依赖
目标服务器可能缺少pythonnet所需的VC++ Redistributable运行时库,安装对应版本的VC++运行时(建议VS2019 x86/x64版本),保证依赖完整性。手动同步pythonnet依赖文件
从正常运行的服务器上复制pythonnet.pyd、clr_loader.dll等pythonnet相关文件,替换目标服务器应用目录下的对应文件,确保依赖文件版本完全一致。测试未打包脚本
在目标服务器上直接运行Python脚本PIConnectorHealth.py,若脚本能正常执行,说明问题出在打包环节,重点优化PyInstaller的打包配置即可。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

