将python代码打包成exe文件可以在不安装python环境的情况下直接运行python代码,譬如自己在自己的电脑上写好了代码,想发给其他人使用,可以用下述方法将python程序打包成exe文件,其他人直接执行exe文件即可使用该程序。
1.安装pyinstaller
CMD打开命令行
pip install pyinstaller
此时如果不行,可能是pip没有添加到环境变量。添加到环境变量的具体方法可参考步骤2中的方法。
2.检查是否安装完成
pyinstaller --version
pyinstaller -v
上述两条命令均为查看版本的命令,如果能正常查看版本号即为安装完成,跳转至步骤3。
*此时可能出现报错。
这也是由于未添加到环境变量所致。添加到环境变量的意思就是该功能/文件在任何路径下都可以访问。这种情况需要找到其路径,并添加到系统变量的path中。
(1)找pyinstaller路径
pip show pyinstaller
然而实际添加到环境变量的路径应该是Scripts。
转到上述红框路径的上一级目录Python312,看到有Scripts文件夹,进入,查看有pyinstaller.exe。只有exe文件才能直接执行。
(2)添加到环境变量
复制Scripts文件夹路径,搜索编辑系统环境变量,打开。
添加之后确定,保存。重启CMD,可以正常查看version,即安装完成。
3 使用pyinstaller打包
最好在虚拟环境下打包,这样可以减少对不必要的库的打包,提升运行速度。
可参考下述文章激活虚拟环境,并安装所需要的库。
继续在虚拟环境的终端命令行进行打包操作。
pyinstaller -F -p xxxxxxx\.venv\Lib\site-packages main.py
上述xxx表示省略,-F
参数代表制作独立的可执行程序,-p表示添加导入路径,即你所安装的库的路径。具体为刚才创建的虚拟环境的.venv文件夹下的路径。根据实际情况将绝对路径写在这里即可。最后的main.py为你想要打包的python文件,可根据实际情况改成自己的文件名。
这步完成后,会生成main.spec文件和dist、build文件夹,其中可执行文件存储在dist文件夹内,直接执行即可。
4 输入输出文件说明
生成结束后,执行main.exe文件时,当前路径在main.exe文件所在的目录下,其实与之前的main.py文件是不同的。
因而如果py程序需要输入或者输出文件的话,最好在编写程序时,就将输入输出文件设置在与main.py同一目录下,这样在生成exe之后,直接将上述输入输出文件移动到exe所在文件夹(即dist文件夹)即可。
最终dist文件夹即为可移植的程序,复制到其他电脑上也可以正常运行。
注:
操作错误说明:
(1)我一开始操作的时候一直用CMD进行打包操作,最终都会出现各种各样的错误,导致main函数执行出错,依赖库无法识别等等,应该是在虚拟环境下进行操作,才能避免上述错误。
(2)注意虚拟环境也需要pip install pyinstaller安装pyinstaller库。
(3)上述所有路径最好都不要有中文,否则可能出现无法识别路径的问题。