本教程提取了pyinstaller官方文档部分内容并加以翻译, 希望给初学者一点指导, 仅供参考
- 安装pyinstaller:
pip install pyinstaller
https://pyinstaller.readthedocs.io/en/stable/usage.html
想看例子往后翻
--------正文开始--------
使用pyinstaller的命令格式是:
pyinstaller [options] script [script …] | specfile
初级用法,不编辑.spec文件
pyinstaller [options] script
最简单的情况下, 在命令行中切换到你的脚本myscript.py
所在的目录后, 执行
pyinstaller myscript.py
即可
pyinstaller会分析你的代码myscript.py
并且:
- 在脚本所在目录下创建
myscript.spec
(高级用法, 不用管) - 在脚本所在目录下创建
build
文件夹, 并在其中写入日志文件和程序运行产生的文件 - 在脚本所在目录下创建
dist
文件夹, 并在其中写入生成的myscript
的可执行文件(.exe)
[options]写什么?
一般设置
即命令格式中的[options]
选项 | 功能 | 示例 |
---|---|---|
-h 或者 --help | 显示帮助功能 | pyinstaller -h myscript.py |
- -distpath [路径] | 生成的exe的目录(默认在dist文件夹) | pyinstaller --distpath Myexe |
生成什么?
选项 | 功能 | 示例 |
---|---|---|
-D 或者 --onedir | 此为默认选项, 创建一个单一bundle文件夹, 内含可执行文件 | pyinstaller -D myscript.py |
-F 或者 --onefile | 创建一个单一文件, 即是可执行文件 | pyinstaller -F myscript.py |
- -specpath [路径] | 保存spec文件的文件夹(默认与脚本在同一目录) | pyinstaller - -specpath MYSPEC |
pyinstaller检查python从哪里import?
选项 | 功能 | 示例 |
---|---|---|
-p [路径] 或者 --paths [路径] | 搜索 py 文件import的路径.允许设置多个路径, 以 : 分隔, 或者说重复使用这个命令. | 一般情况不用设置, 只要你编译器中能成功import就没问题(环境变量中的路径是生效的). |
- -key [密钥] | 用来加密python字节码的密钥 | 无特殊情况不用设置 |
windows和mac OS X特定命令
命令 | 功能 | 示例 |
---|---|---|
-c 或者 --console 或者 --nowindowed | 打开一个控制台窗口, 这是默认选项, 在windows系统中, 如果入口文件是 .pyw 文件, 此选项无效. | 默认的, 不用写 |
-w或者–windowed 或者 --noconsole | 不显示控制台窗口(类似cmd的黑框框), 如果你写的是带UI的程序, 此选项基本必选.如果入口程序是pyw文件, 此选项默认生效. | pyinstaller -w myscript.py |
实战
假设有两个文件, func.py , main.py 同在 新建文件夹
中
func.py
def test():
print('test!')
input('按回车键继续...')
main.py
import func
if __name__ == '__main__':
func.test()
-
在文件夹中按住shift, 右键会发现多出了一个选项"在此处打开PowerShell", 点击此项打开powershell窗口(有的电脑是cmd ,都可以 ).
-
我这个程序不带UI, 所以需要显示控制台.我不想生成很多文件, 所以我选择
-F
, 我想把spec文件归纳到文件夹specfolder
中, 所以我选择--spec specfolder
-
在powershell中(cmd中也可以)运行
pyinstaller -F --spec specfolder main.py
-
成功, 打开dist文件夹,发现
main.exe
-
双击运行
-