pyinstaller打包标准流程+错误解决

标准流程

  • 导出当前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

debug:打包使用多线程的代码

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

ref: https://www.cnblogs.com/seikito/p/10384174.html

debug:Python library not found: libpython3.6m.so, libpython3.6.so.1.0, libpython3.6m.so.1.0, libpython3.6mu.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文件

然后拷贝一下:

sudo cp libpython3.6m.so.1.0 /usr/local/lib/

修改一个文件:

sudo vi  /etc/ld.so.conf

添加一行:

include /usr/local/lib

保存,退出并执行:

sudo ldconfig

相关推荐

  1. pyinstaller打包标准流程+错误解决

    2024-02-09 22:44:01       29 阅读
  2. python 文件打包(使用pyinstaller)

    2024-02-09 22:44:01       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-09 22:44:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-09 22:44:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-09 22:44:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-09 22:44:01       20 阅读

热门阅读

  1. C语言中的多级指针、指针数组与数组指针

    2024-02-09 22:44:01       26 阅读
  2. C语言-3

    C语言-3

    2024-02-09 22:44:01      23 阅读
  3. 精通Python爬虫:掌握日志配置

    2024-02-09 22:44:01       28 阅读
  4. 三、流程控制

    2024-02-09 22:44:01       29 阅读
  5. 字符串Hash的一个板子题的思考

    2024-02-09 22:44:01       28 阅读
  6. 贪心+堆维护,LCP 30. 魔塔游戏

    2024-02-09 22:44:01       33 阅读
  7. 人工智能深度学习如何入门?

    2024-02-09 22:44:01       26 阅读
  8. QT时间日期与定时器

    2024-02-09 22:44:01       29 阅读
  9. 第三百一十二回

    2024-02-09 22:44:01       32 阅读
  10. MongoDB聚合: $sortByCount

    2024-02-09 22:44:01       28 阅读
  11. C#系列-数据结构+递归算法+排序算法(3)

    2024-02-09 22:44:01       27 阅读
  12. VUE2和VUE3区别对比一览

    2024-02-09 22:44:01       24 阅读