为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM8
【操作系统】:银河麒麟桌面操作系统V10(SP1) 版本2303
【CPU】: 飞腾
【问题描述】*:
依赖:
python3.8
dmPython2.5.30
dmSQLAlchemy1.1.17
SQLAlchemy==1.2.0
现象:
服务通过命令行python server.py启动一切正常没有任何问题,但使用pyinstaller打包后启动就会出现以下报错:
我的pyinstaller打包配置中已经将dm相关的库都加入了,甚至有些冗余:
同时我已经修改了sqlalchemy库方言包内__init__.py文件代码,并参考其他文章将dmSQLAlchemy1.1/dmSQLAlchemy中源代码都放在虚拟环境site-packages/sqlalchemy/dialects/dm下了:
请问还需要对什么文件进行修改 或 补全什么依赖文件吗?

问题根源
dmPython是一个.egg包,并且包含.so文件,pyinstaller 打包时 egg 目录和动态库可能被放入 dist,但 运行时 sys.path 没有指向这个 egg解决方案
binaries=[ ('/path/to/dmPython-2.5.30-py3.8-linux-aarch64.egg/dmPython.cpython-38-aarch64-linux-gnu.so', '.'), ], datas=[ ('/path/to/dmSQLAlchemy-1.1.17-py3.8.egg', 'dmSQLAlchemy-1.1.17-py3.8.egg'), ('/path/to/dmPython-2.5.30-py3.8-linux-aarch64.egg', 'dmPython-2.5.30-py3.8-linux-aarch64.egg'), ], hiddenimports=[ "dmPython", "sqlalchemy.dialects.dm", ],import sys import os egg_path = os.path.join(sys._MEIPASS, "dmPython-2.5.30-py3.8-linux-aarch64.egg") if egg_path not in sys.path: sys.path.insert(0, egg_path)runtime_hooks=['runtime_hooks/add_dmPython_path.py'],