py2exe打包python_和python爱好者谈谈如何在新版python中使用py2exe打包可执行程序

大家好,今天和大家聊聊把python程序打包那些事。

我们编写好程序之后,肯定要发给别人使用,如果不给别人使用,你编程序干什么。

python编译器本身没有打包的功能,如果我们编写好程序,要想给别人使用,必须要让别人的电脑具有开发程序的同样的环境配置,这样实在太麻烦了。

所以我们要制作出一个不需要让别人安装python环境也能使用我们编写的程序。

在网上,这些python打包工具很多,比如,pyinstaller,还有py2exe,不过我觉得,还是py2exe比较好,因为比较灵活。

下面我说一下这个怎么用。

首先把python安装好,然后把镜像源设置到国内,怎么设置,咱们争渡网上有教程,就是pip的设置方法。

我们到这个网站下载:

https://github.com/albertosottile/py2exe/

支持的最高版本是python3.8,我们下载那个py3.8,amd64的whl文件。

下载回来之后,放到我们能找到的地方,我假设你放在了d盘里。

开始安装,已管理员打开命令提示符或powershell,先安装wheel,输入命令:

pip install wheel

回车,安装的时候,用咱们争渡的命令查看方法看消息,安装好后,我们把目录切换到d盘,,输入命令:

d:

回车,因为我们的这个文件放在d盘,所以,输入安装命令:

pip install py2exe-0.10.0.2-cp38-none-win_amd64.whlpy2exe-0.10.0.2-cp38-none-win_amd64.whl

回车,然后看命令行,直到显示安装成功,并回到大于号,说明已经安装好了。

我们再安装一个东西,就是pywin32,这个东西可能会用到,输入命令:

pip install pywin32

回车安装,直到安装成功。

现在,我们就可以写程序了,我假设,你的程序写好了,放在d盘里的workspace文件夹里,主文件名叫app.py。

下面,我们编写打包脚本,py2exe要想把我们写的程序打包,必须编写打包脚本,然后通过运行这个脚本进行打包。

我们用vscode或者其他的编辑器,建立一个叫setup.py的文件,当然,名字你可以随便起,扩展名一定是.py,我假设打包脚本的名字是setup.py。我们开始写脚本,如下:

from distutils.core import setup

import py2exe

setup(console=["app.py"])

from distutils.core import setup

import py2exe

setup(console=["app.py"])

下面解释一下代码,第一行,从distutils.core这个包中导入一个叫做setup的函数,第二行,导入py2exe,第三行,调用setup这个函数,里面的参数是一个命名参数,绑定了一个列表,里面是主文件名。

保存,我们进入d盘里的workspace文件夹,按alt加d切换到地址栏,删除里面的地址,输入cmd回车,打开命令提示符,在这里打开的命令提示符的位置就是当前目录,我们输入下面的命令,把app.py打包成可执行文件:

python setup.py py2exe

这条命令是把setup.py文件扔给python执行,同时,传给一个参数叫py2exe,当我们按回车之后就开始打包了,我们在命令行里就可以看到复制依赖的过程,打包好后,回到大于号,在当前目录里,会多出一个dist目录,这个目录就是打包好的程序,要想在没有安装python的计算机上运行,需要把整个目录拷贝进去,或者压缩之后发给别人,运行的时候,在这个目录里找到那个app.exe的文件执行就可以了。

我们看这个脚本,每次输入这一大串命令是不是很麻烦,还有简单的办法,大家看我修改的:

import sys

sys.argv.append("py2exe")

from distutils.core import setup

import py2exe

setup(console=["app.py"])

import sys

sys.argv.append("py2exe")

from distutils.core import setup

import py2exe

setup(console=["app.py"])

后面的我不用解释了,前面的,首先,引入一个sys这个包,这个包是系统功能包,因为我们要用获取命令行参数列表的变量。

第二行,调用了这个sys.argv变量,这个变量是获取命令行参数列表的变量,并调用了append方法,给这个命令行参数列表添加了一个"py2exe"这个文本,这样,命令行参数就不用输入了,当我们需要打包的时候就这样写:

python setup.py

后面的py2exe就不用写了,非常方便。

我不知道我这样解释大家是否明白,就到这儿吧。

你可能感兴趣的:(py2exe打包python)