前言

我们开发的python脚本一般都会用到一些第三方包,当别人需要用到我们编写的脚本时,如果我们将脚本文件发给他,他是不能直接运行去用的,他需要安装python解释器,配置相应的环境,这是相当麻烦的。那怎么办呢?我们可以将脚本和解释器打包成exe,再发给别人去使用。

PyInstaller介绍

PyInstaller是一个的打包python的py文件的库。

PyInstaller除了win32平台外还支持Linux,Unix平台

PyInstaller本身并不是Python模块,所以安装时放到哪里都可以

优点:

  1. 可将python文件转成可执行文件
  2. 跨平台
  3. 可以选择exe文件的图标 (Windows only)

python脚本是不能脱离python解释器单独运行的,所以在打包的时候,至少会将python解释器和脚本一起打包,同样,为了打包的exe能正常运行,会把我们所有安装的第三方包一并打包到exe。

安装pyinstaller

pip install pyinstaller

使用pyinstaller进行打包

1.我习惯在Anaconda中创建虚拟环境来完成一个个的项目,所以我的PyInstaller库就直接安装在了我要打包的项目的虚拟环境(face)中

2.通过pip命令在虚拟环境中安装好包之后,通过cd命令转移到主文件所在的项目目录中,如cd C:\Users\80621\Desktop\python_learning\recongz

3.我的主文件是run.py

等待打包完成就可以了。

打包完成后项目文件夹中会多一个dist目录,exe文件就在其中

若项目中有文件用到了相对路径,需要把那些用到的文件再拷贝一份放到dist目录下。

查用打包命令

Pyinstaller -F setup.py 打包exe

Pyinstaller -F -w setup.py 不带控制台的打包

Pyinstaller -F -i xx.ico setup.py 指定exe图标打包

Pyinstaller -F -w -i xx.ico setup.py 指定exe图标并且不带控制台的打包

ico转换 :在线图片转icon格式 – 图片转换成icon在线工具 – 迅捷PDF转换器在线免费版

以下问题需要注意!!! 、

1)路径问题

如果你的程序中有图片等资源,是需要根据程序中的相对路径加入到dist文件中,也要在.exe同目录中加入images的文件夹(图片资源)

如果原.py程序使用了图片等素材,并且添加图片是相对路径(同一个文件夹下可以不使用绝对路径),打包文件后,需要将图片等素材拷贝一份放在打包后的文件夹下,否则运行.exe程序会找不到图片素材。

如果原.py程序使用图片添加的是绝对路径,在本地电脑上运行时可能不会发现错误。但是你将打包后的文件发给另一台机器,运行.exe程序会报错,大概意思是“根据你写的绝对路径找不到图片等素材”,即使你在文件夹下拷贝了素材,但是绝对路径也是错误的,所以,最好使用上一种方法。

2)打包的主文件问题

只能指定一个要打包的模块,也就是启动模块

发布后,可执行文件执行路径不能有中文(最好也不要有空格)

启动执行的文件中不要有下面这种判断,否则可执行文件执行会没有任何效果

 if __name__=='__main__':

将exe放到其他机子上运行,弹出“找不到msvcr100.dll“ ,手动将”msvcr100.dll“拷贝到dist目录下即可

3)养成良好习惯

写代码的时候应当养成良好的习惯,用什么函数导什么函数,不要上来就import整个库,最后你会发现你一个100KB的代码打包出来有500MB,全是库

使用Inno SetUp制作安装包_鱼生艰难啊的博客-CSDN博客_inno安装包