Python To Exe
将 Python 代码打包成 Windows 可执行文件并包含所有的依赖,可以使用 pyinstaller
工具。
操作步骤
-
在命令行中安装
pyinstaller
pip install pyinstaller
-
创建一个
.spec
文件可以使用
pyinstaller
命令创建一个.spec
文件,其中包含将要用于构建 Windows 可执行文件的所有信息。在命令行中进入打包的 Python 脚本所在目录,并执行以下命令pyinstaller yourscript.py --name yourname --onefile
这会在当前目录中创建一个名为
yourname.spec
的文件。 -
在命令行中执行以下命令
pyinstaller yourname.spec
这将构建一个可执行文件并将其放置在 dist 文件夹中。在这里,所有的依赖项都应该被打包进这个可执行文件,而不需要用户预先安装。
注意如果你的代码有与操作系统相关的依赖项,则需要通过虚拟环境或 Docker 等方式在相应的操作系统上构建可执行文件,以确保生成的可执行文件在不同的操作系统上均可运行。
缩减尺寸
使用UPX
可以缩减尺寸
使用方法
-
将附件压缩包中的UPX.exe 放到 pyinstaller.exe 同级目录中
-
重新执行打包动作即可
pyinstaller yourname.spec
疑难杂症
解决依赖分析错误
问题
对于动态导入、条件导入或一些特殊情况的导入语句, 有些依赖项可能无法被静态分析器正确地检测到.
解决
*修改 .spec
文件
你需要打开 yourname.spec
文件,搜索 hiddenimports
并添加以下行,以包含所有依赖项
hiddenimports=['<module_name>', '<module_name>'...'<module_name>']
例如
hiddenimports=['numpy', 'pandas', 'modulesName', 'hereIsAnExample']
可以通过pipreqs快速提取依赖
字符编码错误
有时候会遇到解析时就报类似编码错误,不要犹豫, 直接进vscode, 新建空白文件, 保存, 然后把旧文件内容复制粘贴到新空白.py中.
这个问题应该是来自于 notepad++, ultraedit等文本编辑器在中文环境下的不同默认编码造成,
git不能跟踪这个字符编码改动,
而python对字符编码敏感
最终引发了这个冲突