python安装完成后动态库libpython3.x.so.1.0找不到问题

Python010

python安装完成后动态库libpython3.x.so.1.0找不到问题,第1张

ldd python 快捷方式

查看动态库是否有

这里以3.8.2为例

cd /usr/local/python382

ldd ./bin/python3

cp ./lib/libpython3.8.so.1.0 /usr/lib64

ldd ./bin/python3

pyinstaller是一个很好的工具,可以把Python工程文件打包成可执行文件

这样的好处很多,可以避免源码泄露,也方便用户阅读和管理

但是当程序集涉及到动态库的时候,常规操作无法将动态库自动打包到可执行文件中

举个例子,下图所示的程序集中有需要用到两个".so"的动态库

我们使用常规指令对该程序集进行打包

上述打包指令执行完成后,在当前文件夹会生产一个"disk"文件夹,里面有一个"main"的可执行文件

最终需要把下述三个文件同时放在一起,可执行文件"main"才能正常执行

现在的想法是,在pyinstaller打包过程中把两个".so"动态库也编译到可执行文件中

经过一番探索,这个想法是可以实现的,需要用到配置文件".spec"

配置文件中Analysis[binaries]专门用来放置动态库的位置,不过格式稍微有些特殊

大功告成

顺便提一句,如果有素材(图标、模型、文件等)需要打包,则直接把路径填写到Analysis[data]中即可

参考资料:

Pyinstaller 打包发布经验总结

Pyinstaller打包py文件简明教程

pyinstaller官方文档