打包成exe笔记

Python打包成exe笔记

https://www.jianshu.com/p/850c3cfe9462

打包选择参考网站

pip

# 导出:
pip freeze > requirements.txt
# 安装:
pip install -r requirements.txt

virtualenv虚拟环境

# virtualenv安装
pip3 install virtualenv
# 创建虚拟环境envName
virtualenv -p /usr/bin/python3.6 envName --no-site-packages
source venv/bin/activate

pyinstaller安装

pip install pyinstaller -i https://pypi.douban.com/simple/

pyinstaller参数

参考内容pyinstaller官网

常规选项

命令参数 命令介绍
-h, --help 显示此帮助消息并退出
-v, --version 显示程序版本信息并退出。
--distpath DIR 放置捆绑应用的位置(默认值:./ dir)
--workpath WORKPATH 在哪里放置所有临时工作文件,.log,.pyz等(默认值:./ build)
-y, --noconfirm 替换输出目录(默认值:SPECPATH / dist / SPECNAME)而不要求确认
--upx-dir UPX_DIR UPX实用程序的路径(默认:搜索执行路径)
-a, --ascii 不包括unicode编码支持(默认值:如果可用,则包含)
--clean 在构建之前清理PyInstaller缓存并删除临时文件。
--log-level LEVEL 构建时控制台消息中的详细信息量。LEVEL可能是DEBUG,INFO,WARN,ERROR,CRITICAL之一(默认值:INFO)。

要生成什么

命令参数 命令介绍
-D, --onedir 创建包含可执行文件的单文件夹包(默认)
-F, --onefile 创建一个文件捆绑的可执行文件。
--specpath DIR 用于存储生成的spec文件的文件夹(默认值:当前目录)
-n NAME, --name NAME 要分配给捆绑应用程序和规范文件的名称(默认值:第一个脚本的基本名称)

捆绑什么,在哪里搜索

命令参数 命令介绍
-p DIR, --paths DIR 搜索导入的路径(如使用PYTHONPATH)。允许多个路径,以“:”分隔,或多次使用此选项
--hidden-import MODULENAME, --hiddenimport MODULENAME 命名在脚本代码中不可见的导入。此选项可以多次使用。
--additional-hooks-dir HOOKSPATH 搜索挂钩的其他路径。此选项可以多次使用。
--runtime-hook RUNTIME_HOOKS 自定义运行时挂接文件的路径。运行时挂钩是与可执行文件捆绑在一起的代码,在任何其他代码或模块之前执行,以设置运行时环境的特殊功能。此选项可以多次使用。
--exclude-module EXCLUDES 可选模块或包(他的Python名称,而不是路径名)将被忽略(好像没有找到)。此选项可以多次使用。
--key KEY 用于加密Python字节码的密钥。

如何生成

命令参数 命令介绍
-d, --debug 在初始化和启动捆绑的应用程序时,告诉引导加载程序发出进度消息。用于诊断缺少导入的问题。
-s, --strip 将符号表条应用于可执行文件和共享库(不推荐用于Windows)
--noupx 即使可用,也不要使用UPX(Windows和* nix之间的工作方式不同)

Windows和Mac OS X特定选项

命令参数 命令介绍
-c, --console, --nowindowed 打开标准i / o的控制台窗口(默认)
-w,--windowed,--noconsole Windows和Mac OS X:不为标准i / o提供控制台窗口。在Mac OS X上,这也会触发构建OS X .app包。在* NIX系统中忽略此选项。
-i ,-icon FILE.ico:将该图标应用于Windows可执行文件。FILE.exe,ID,从exe中提取带有ID的图标。FILE.icns:将图标应用于Mac OS X上的.app包

Windows特定选项

命令参数 命令介绍
--version-file FILE 从FILE添加版本资源到exe
-m , --manifest 将清单FILE或XML添加到exe
-r RESOURCE, --resource RESOURCE 将资源添加或更新到Windows可执行文件。RESOURCE是一到四个项目,FILE [,TYPE [,NAME [,LANGUAGE]]]。FILE可以是数据文件或exe / dll。对于数据文件,必须至少指定TYPE和NAME。LANGUAGE默认为0或可以指定为通配符以更新给定TYPE和NAME的所有资源。对于exe / dll文件,如果省略TYPE,NAME和LANGUAGE或将其指定为通配符,则将FILE中的所有资源添加/更新到最终可执行文件。此选项可以多次使用。
--uac-admin 使用此选项会创建一个Manifest,它将在应用程序重新启动时请求提升。
--uac-uiaccess 使用此选项可以使提升的应用程序与远程桌面一起使用。

Windows并排程序集搜索选项(高级)

命令参数 命令介绍
--win-private-assemblies 捆绑到应用程序中的任何共享程序集都将更改为专用程序集。这意味着将始终使用这些程序集的确切版本,并且将忽略在系统级别的用户计算机上安装的任何较新版本。
--win-no-prefer-redirects 在搜索要捆绑到应用程序中的共享或专用程序集时,PyInstaller不希望遵循重定向到较新版本的策略,并会尝试捆绑程序集的确切版本。

Mac OS X特定选项

命令参数 命令介绍
--osx-bundle-identifier BUNDLE_IDENTIFIER Mac OS X .app捆绑包标识符用作代码签名目的的默认唯一程序名称。通常的形式是反向DNS表示法中的分层名称。例如:com.mycompany.department.appname(默认值:第一个脚本的基本名称)

打包jpype运行报numpy 报错

numpy包名问题,重新安装下numpy
删除anaconda环境变量与anaconda,重新安装anaconda

打包Tensorflow运行报matplotlib错误

在matplotlib前加:

import matplotlib
matplotlib.use('TkAgg')
在下边代码前加上边二句
import matplotlib.pyplot as plt

导包PIL出现错误

ImportError: The _imagingft C module is not installed
原因是因为没有安装对应的图片和处理字体的包
没有找到解决方法

你可能感兴趣的:(打包成exe笔记)