pyinstaller-lubuntu-打包排错记录

多线程问题

对于用到了多线程的Python程序需要单独注意,PyInstaller有很多线程的问题,打包后双击exe程序运行时,程序会不停的启动进程,但是并没有真正执行进程(详见https://blog.csdn.net/t1014336028/article/details/83018987)
按照网上提到的办法,在 if name == ‘main’: 下面加一行代码:multiprocessing.freeze_support(),再打包运行.exe文件,就可以跑起来了。
来自 https://www.cnblogs.com/seikito/p/10384174.html

导出当前python环境中所有的包

pip freeze > requirements.txt
如果只是导出当前项目运行所依赖的包,可以用pipreqs
安装:pip install pipreqs
使用:进入根目录,pipreqs ./
这样会在根目录生成一个requirements.txt,里面有用到的包和版本

继续打包

然后在本地创建一个虚拟环境(不要去共享文件夹)。py3.6自带venv
创建:python3 -m venv path
进入:source path/bin/activate
安装需要的包:pip install -r requirements.txt
–default-timeout=1000
不能用pip3,因为会装到原环境里,要用pip
再装pyinstaller,同样也用pip
激活:source myenv/bin/activate
关闭:deactivate

OSError: Python library not found: libpython3.6m.so, libpython3.6.so.1.0,

OSError: Python library not found: libpython3.6m.so, libpython3.6.so.1.0, libpython3.6m.so.1.0, libpython3.6mu.so.1.0
    This would mean your Python installation doesn't come with proper library files.
    This usually happens by missing development package, or unsuitable build parameters of Python installation.
    * On Debian/Ubuntu, you would need to install Python development packages
      * apt-get install python3-dev
      * apt-get install python-dev
    * If you're building Python by yourself, please rebuild your Python with `--enable-shared` (or, `--enable-framework` on Darwin)

首先先看一下这些python库是不是真的不存在:
获取当前python 的bin路径:which python
查看python库:ldd 路径
发现 libpython3.6m.so真的没有
以防万一,搜索一下本地:find / -name ‘libpython3.6m.so.1.0’
这里有个小坑:

find: ‘/run/user/1000/gvfs’: Permission denied

明明用的是root用户,为什么权限不足呢?
官方说这是一个bug——bug#615848. 原因是FUSE文件系统和权限不配的问题,全局搜索时碰到它就会退出报错。
其实这个目录是空的,查不查都没关系。所以,以下解决方式比较简直暴
umount /run/user/1000/gvfs
rm -rf /run/user/1000/gvfs
总之检查完发现真的没有这个so文件。
按照指示,先看一下python3-dev有没有装,发现装了;检查libpython3.6有没有装,发现也装了。然后重新进入python3.6安装路径:/home/pxy/app/Python-3.6.9,rebuild一下:

sudo ./configure --enable-shared
make
sudo make install

这样之后,发现当前路径下已经有了这个so文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值