前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pyinstaller打包python程序

pyinstaller打包python程序

原创
作者头像
CODER_D_XF
修改2021-01-22 11:03:13
1.5K0
修改2021-01-22 11:03:13
举报
文章被收录于专栏:XF的开发笔记XF的开发笔记

说明

文档对应内容为 pyinstaller 4.2, 支持 python 3.5+

如果需要使用python2.7,则需要使用 pyinstaller <= 3.6

安装

从PyPI安装

代码语言:javascript
复制
pip install pyinstaller 

升级

代码语言:javascript
复制
pip install --upgrade pyinstaller

使用命令行方式

语法:

代码语言:javascript
复制
pyinstaller [选项] 脚本 [脚本...]     # 使用命令行方式

常用选项:

  • 生成选项
代码语言:javascript
复制
-D # 生成单个可执行程序
-F # 生成一个目录,包含多个文件和一个可执行程序
  • 搜索路径选项
代码语言:javascript
复制
# 某些Python脚本以PyInstaller无法检测到的方式导入模块:例如,通过对可变数据使用__import __()函数,使用imp.find_module()或在运行时操作sys.path值。
# 此时需要通过命令行添加文件或文件夹路径,或者修改spec文件的方式,告诉pyinstaller这些信息
​
--add--data  <src;dest> # 添加一个或多个非二进制文件或文件夹到可执行程序,分隔符根据系统不同使用不同的,(windows使用 ;)
--add-binary <src;dest> # 添加一个或多个二进制文件到可执行程序
-p DIR # 添加一个imports搜索路径。多个路径使用冒号(:)分隔,或者使用该命令添加多次
--hiden-import MODULENAME # 添加隐式的import模块到可执行文件,多个模块可使用该命令添加多次
  • 加密选项
代码语言:javascript
复制
# 加密python字节码,生成加密的文件
# 使用时候会提示需要安装的包tinyaes,依照提示安装即可:pip install tynyaes
--key KEY # KEY为自定义的加密密钥 eg: --key 123456 即,使用123456作为密钥来加密
  • 是否显示命令行窗口
代码语言:javascript
复制
-c # 可执行程序运行时,打开一个标准IO窗口(命令行窗口),用于接收print调试输出
-w # 可执行程序运行时,不提供标准IO窗口
  • 图标
代码语言:javascript
复制
-i <FILE.ico or FILE.exe,ID or FILE.icns or "NONE">
# FILE.ico:将该图标应用于Windows可执行文件。
# FILE.exe,ID,从exe中提取具有ID的图标。
# FILE.icns:将图标应用于Mac OS X上的.app捆绑包。
# "NONE": 不应用任何图标,从而使操作系统显示某些默认设置(默认:应用PyInstaller的图标)
  • 更多选项
代码语言:javascript
复制
参考官方文档
https://pyinstaller.readthedocs.io/en/stable/usage.html

命令行过长的处理方式

  • shell\bat
代码语言:javascript
复制
pyinstaller --noconfirm --log-level=WARN ^
    --onefile --nowindow ^
    --add-data="README;." ^
    --add-data="image1.png;img" ^
    --add-binary="libfoo.so;lib" ^
    --hidden-import=secret1 ^
    --hidden-import=secret2 ^
    --icon=..\MLNMFLCN.ICO ^
    myscript.spec
  • python
代码语言:javascript
复制
import PyInstaller.__main__
# pyinstaller my_script.py --onefile --windowed
PyInstaller.__main__.run([
    'my_script.py',
    '--onefile',
    '--windowed'
])

使用spec文件方式

语法:

代码语言:javascript
复制
# 首次执行会在指定或默认目录生成my_script.spec文件
pyinstaller options.. my_script.py
# 根据需要修改my_script.spec文件后,可执行命令构建可执行程序
pyinstaller my_script.spec

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 安装
  • 使用命令行方式
  • 使用spec文件方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档