【发布时间】:2021-10-08 12:49:04
【问题描述】:
从使用pyinstaller 构建的应用程序运行mysqlbinlog 进程时,会出现以下错误消息:
mysqlbinlog: /opt/myapp/libz.so.1: version `ZLIB_1.2.9 'not found (required by mysqlbinlog)
我进行了几次测试并注意到发生这种情况是因为pyinstaller 在安装应用程序的目录中放置了libz.so.1 的旧版本,而不是mysqlbinlog 所需的版本。如果您删除此文件/opt/myapp/libz.so.1,则问题将得到解决,因为使用的是库的系统版本。
一个简单的解决方案是从捆绑包中删除libz.so.1,但我不确定之后该应用程序能否在不同版本的系统上正常工作。
在通过子进程运行命令时,有什么方法可以强制应用不使用位于应用安装目录中的库?
其他信息:
使用以下命令在 docker 容器 centos:7.2.1511 中构建应用程序:
pyinstaller myapp.py --clean --name=myapp
这个bug在Ubuntu 20.04.3 LTS上稳定模拟
mysqlbinlog 通过子进程运行,命令如下:
subprocess.run(command_args, check = True, shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
【问题讨论】:
标签: python subprocess pyinstaller