python生成exe文件
快速完成
1、安装Pyinstaller,在cmd窗口,输入指令“pip install pyinstaller”进行网络安装。
2、使用指令“pyinstaller -F D:\\文件夹\xxx.py”生成exe文件
-F生成的有命令框,-Fw生成的没有命令框
3、等待生成完毕后,回到源文件目录,在dist目录下,找到生成的exe文件,即可完成Python生成exe文件操作。
参考链接
Pycharm项目生成可执行exe文件(Windows版) https://blog.csdn.net/weixin_43848614/article/details/111771308
生成的文件过大如何解决?
第一步:安装 虚拟环境Pipenv
pip install pipenv
第二步:进入虚拟环境
pipenv shell
第三步:安装依赖的库
pip install xxx (python脚本依赖的库pandas,numpy,xlrd,openpyxl等)
pip install pyinstaller
第四步:查看安装依赖的库是否完整
pip list
第五步:生成exe文件
pyinstaller -F D:\\文件夹\xxx.py
pyinstall加密打包
这个工具打包真的是挺省事的,但是一旦涉及保护源码,那么原来简单的打包就不够用了。轻易就能被人反编译。
工具自然也是要进步的,现在pyinstall支持加密打包了。
虽然我没查到他加密的原理是什么,但是应该比原来破解增加了一些难度,应该暂时够用了。主要网上提供的加密手段多少有点麻烦。为了省事。
pip install pyinstaller
如果需要使用加密功能,则需要安装tinyaes,这个包依赖vc++14,
如果使用原生版的Python,那么需要在本机安装好vc++14。这个多少有点麻烦。而使用anaconda3就方便多了,我看了一下,anaconda自带vc++等运行环境,考虑很周到。
所以推荐使用anaconda作为基本环境。
pip install tinyaes
打包命令:
pyinstaller -F -w --key '12345678' --clean main.py
常用指令集见:https://www.cnblogs.com/bbiu/p/13209612.html
将配置文件一起打包
程序有时免不了有一些配置文件,而我们打包成一个exe文件就是为了方便,但是配置文件如果不一起打包进去,就会多出几个文件,很麻烦。
修改程序中对配置文件的路径引用
打包进程序内的配置文件的引用会发生一点变化,官方有给出解决方案:
def processPath(path):
'''
针对pyInstaller打包程序而设计。这是官方给出的方案。
在pyInstaller打包时,会给sys设置属性frozen,
并且会将打包程序的绝对路径存储在sys._MEIPASS。
所以当不打包程序时,不需要使用该方案拼接路径
:param path: 相对于根目录的路径
:return: 拼接好的路径
'''
if getattr(sys, 'frozen', False): # 判断是否存在属性frozen,以此判断是打包的程序还是源代码。false为默认值,即没有frozen属性时返回false
base_path = sys._MEIPASS #该属性也是打包程序才会有,源代码尝试获取该属性会报错
else:
base_path = os.path.abspath(".") # 当源代码运行时使用该路径
return os.path.join(base_path, path)
对配置文件的引用都需要将路径进过上面的函数进行拼接,否则打包了会调用配置文件失败。
先生成spec文件
pyi-makespec -F -w main.py
(如果需要打包图标,可以在这一步添加 -i head.ico)
执行该命令后会在main.py目录下生成main.spec文件。打开该文件,在datas里面添加配置文件的路径。他的格式是:('data.ini','.'),前面为配置文件名,后面是所在路径。main.py所在属于根目录,所以直接用“.”。
打包程序
pyinstaller --key '12345678' main.spec
打包过程没问题就可以了。这样配置文件就包含在exe里面。
运行测试一下,没问题就收工。
虚拟环境下通过pyinstaller 打包
使用pyinstaller打包.py文件时,会把很多已安装的无关库同时打包进去,导致打包生成的.exe文件体积过大。使用pipenv创建虚拟python环境,在虚拟环境中安装.py文件所用到的库(即py文件中import 的第三方库),然后在pipenv所创建的虚拟环境中使用pip安装打包所用到的pyinstaller。注意:本机安装过pyinstaller的也要重新进入虚拟环境中安装,不然会使用pyinstaller命令打包时,还是会生成大体积的.exe可执行文件。
1、在命令行(CMD)使用pip命令安装pipenv库,用于创建虚拟环境
pip install pipenv
采用调用国内镜像库安装:
pip install keras -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
2、新建一个准备当环境的文件夹,并cd进入该文件夹
3、建立虚拟环境
pipenv install
4、进入虚拟环境(以下操作皆为虚拟环境下的操作)
pipenv shell
5、安装.py文件用到的模块
pip install 【.py用到的模块】
6、安装pyinstaller模块,用于打包.py文件
pip install pyinstaller
7、使用pyinstaller打包文件
pyinstaller -Fw test.py(.py文件根据实际情况更改)
这里这个路径的话,最好直接把要打包的文件放到本目录下打包,不在本目录下打包,test.py就要包含绝对路径。
打包的程序运行出现no module name 【程序要引用的模块】,采用pyinstaller的-p参数引入模块的地址,多个地址以分号隔开;
8、结果文件
运行完第7步之后,在目录下回生成‘dist’文件夹,里面存放的就是结果文件。
情况二:再次打包
若再次打包时,情况一中所创建的虚拟环境未曾删除,可跳过情况一中的第1、2、3步,直接进行第四步进入虚拟环境。然后第5步同理保留原先添加过的py模块,即若无新增新的模块,可跳过第5步和第6步,直接进行第7步打包操作。
删除虚拟环境:先exit()退出虚拟环境,然后删除虚拟环境使用:pipenv --rm
1
要删除虚拟环境,可以先卸载掉之前在虚拟环境中安装的库,既然都要删了,那库耶不用了。
1、cd进入此前创建虚拟环境的文件夹。
2、进入虚拟环境(以下操作皆为虚拟环境下的操作)
pipenv shell
1
3、安装.py文件用到的模块()
pip install 【相较上一次打包新增的模块】
1
4、使用pyinstaller打包文件
pyinstaller -Fw test.py(.py文件根据实际情况更改)
引用地址 https://blog.csdn.net/feiyu68/article/details/117174889
Pycharm项目生成可执行exe文件(Windows版
参考链接1 https://blog.csdn.net/lsjweiyi/article/details/121307350
一、安装pyinstaller
(1)在cmd安装pyinstaller包
(2)使用pycharm安装pyinstaller
二、打包生成exe文件
附:关于pyinstaller 的常用参数
必须将用到的资源放在同级目录下
一个项目开发完毕后总有一种想法,就是生成可执行文件,总不能一直用python xxx执行吧。为此下面介绍使用开发环境pycharm生成exe文件
pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行,它不是跨编译的,也就是说在Windows下用PyInstaller生成的exe只能运行在Windows下,在Linux下生成的只能运行在Linux下。
一、安装pyinstaller
(1)在cmd安装pyinstaller包
1、检查电脑安装的python版本
2、安装pyinstaller
输入
pip install pyinstaller
3.验证在cmd控制台是否安装pyinstaller成功
(2)使用pycharm安装pyinstaller
以下操作同时适用于windows和Linux下的Pycharm
1、打开Pycharm。
2、打开Terminal(快捷键Alt + F12)
3、安装pyinstaller工具
输入:
pip install pyinstaller
注:也可以官网中完成安装: http://www.pyinstaller.org/
二、打包生成exe文件
接上述pycharm的操作
Terminal中输入:
pyinstaller -F -w main.py
注:
(1)main.py是我的项目启动文件名称,要替换成你自己的项目启动名称。
(2)若有多个文件可以需要用启动文件即可,其他文件(如图像文件、自创的类库等)放在dist文件下
(3)如果是多个文件,那么可以使用下述命令连接
pyinstaller -F 文件1名.py-p 文件2名.py
附:关于pyinstaller 的常用参数
基本语法: pyinstaller options myscript.py
生成的可执行文件放在同目录dist下。
常用的可选参数如下:
–onefile 将结果打包成一个可执行文件
–onedir 将所有结果打包到一个文件夹中,该文件夹包括一个可执行文件和可执行文件执行时需要的依赖文件(默认)
–paths=DIR 设置导入路径
–distpath=DIR 设置将打包的结果文件放置的路径
–specpath=DIR 设置将spec文件放置的路径
–windowed 使用windows子系统执行,不会打开命令行(只对windows有效)
–nowindowed 使用控制台子系统执行(默认)(只对windows有效)
–icon=<FILE.ICO> 将file.ico添加为可执行文件的资源(只对windows有效)
pyinstaller 选项:
-F(注意大写)是所有库文件打包成一个可执行文件,windows下是exe,Linux下是对应的可执行文件;
-w是禁止弹出黑色控制台窗口。
如果你的项目调用了图片等本地资源,请将你的可执行文件放在对应目录才能运行。
如:我的项目调用了相对目录image下的文件,所以我的可执行文件要放在和images同级目录下才能执行。
-w:Windows程序,不显示命令行窗口。
这在GUI界面时非常有用。
-i:是程序图标,app.py是你要打包的py文件
-p: 表示你自己自定义需要加载的类路径,一般情况下用不到
–icon=图标路径
-i:加入图标
-F 打包成一个exe文件
-w 使用窗口,无控制台
-c 使用控制台,无窗口
-p:有些需要手动添加包的位置(dir1,dir2)多个地址时以分号分开(这个是重点,多个文件的实现和单个文件相比就是多了这一步操作)
-D 创建一个目录,里面包含exe以及其他一些依赖性文件
还有一些可以通过pyinstaller -h 来查看参数
如pyinstaller --paths=“D:\Queena” guess_exe.py
此种方式每次都得输入命令比较麻烦,我们可以在pycharm中将pyinstaller 安装成外部工具,如方式二所示
方式二
必须将用到的资源放在同级目录下
最后将其他的图片资源等放在exe文件同级目录下.
module文件用例存放 自建的类
resources文件用来存放图片资源;
点击运行
六、想要分享给朋友的话,就将dist文件夹中的Game文件夹压缩发送.