python-使用pyinstaller打包成可执行程序

python-使用pyinstaller打包成可执行程序. 这里使用的是 Python3.6


前篇


流程

  1. 安装 pyinstaller

    1
    $ pip3 install pyinstaller
  2. 打包. 命令: pyinstaller -F xxx.py

    1
    2
    3
    4
    5
    6
    7
    e:\its_rummy\tools (rls-money-7324 -> origin)
    $ pyinstaller -F tinypng_win.py
    70 INFO: PyInstaller: 3.6
    71 INFO: Python: 3.6.5
    ...
    8750 INFO: Appending archive to EXE e:\its_rummy\tools\dist\tinypng_win.exe
    9086 INFO: Building EXE from EXE-00.toc completed successfully.

    会生成 builddist 两个目录, 可执行程序在 dist 目录下.


pyinstaller 常用参数介绍

  1. -h : 查看参数
  2. -F : 打包成一个 exe 文件
  3. –icon : icon 图片
  4. -w : 使用视窗, 无控制台
  5. -c : 使用控制台, 无视窗
  6. -D : 创建一个目录, 包含 exe 以及其他一些依赖性文件

踩坑

找不到 tls 证书

报错: Could not find a suitable TLS CA certificate bundle

解决办法: 从 Python 安装目录下找到 Lib\site-packages\certifi\cacert.pem, 复制到程序能读到的地方

代码中加入:

1
os.environ['REQUESTS_CA_BUNDLE'] =  os.path.join(SelfPath, 'cacert.pem') # cacert.pem 路径

重新打包即可.

参考: https://blog.csdn.net/qq_40770527/article/details/104847046


找不到模块

报错: ModuleNotFoundError: No module named xxx

打包的时候, 需要冲 import 模块的目录去打包, 才能依赖打包进去. 比如

1
2
3
4
5
F:\z_mywiki\test_script\python
├─rummy
│ ├─googleplay_check.py // 里面 import tool.utils as utils
├─tool
│ └─utils.py

需要在 python 目录下打包, 才能将 tool 里面的东西打进去.

1
2
F:\z_mywiki\test_script\python (master -> origin)
$ pyinstaller.exe -F rummy\googleplay_check.py

打出来的需要管理员权限

这个换了个名字导出来就不需要了, 可以试试换多几个名字.

需不需要管理员权限, 看 icon 右下角即可.


安装 pyinstaller 环境变量找不到

原因是安装 python 时, 没有勾选 添加到环境变量

解决办法: 手动添加进环境变量, 目录 C:\Users%USER%\AppData\Roaming\Python\Python38\Scripts