如何用python写exe程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用python写exe程序相关的知识,希望对你有一定的参考价值。

Win下发布应用

起因

今天实验室同学看到我的乞丐版二输入规则器,他挺感兴趣的,也想要玩玩,但是他没有装python的环境,总不能让他一直玩我电脑吧,所以想到了将程序打包成exe,直接运行!想法一出来,根本挡不住啊,说干就干,先百度python打包exe,一大堆答案,我整理了一下,大概有Py2exe和pyinstaller两种,但是,我给你看张图


这是多久前的产品啊,我屮艸芔茻,如果你执意要用这个请移步,然后自己去玩把,反正我下了之后,根本跑不起来,,,,不信的你可以试试咯py2exe官方下载

安装pyinstaller

安装方法

方法一:使用pip install pyinstaller,也可以参考: python如何安装第三方包,

方法二:如果是下载github上的包之后手动安装,那么步骤是

    打开cmd,切到pyinstaller解压包目录,我直接放在c盘目录下了,所以我的操作是

    cd C:\\pyinstaller-develop

    安装pyinstaller,我的操作是

    进目录后输入python setup.py install

    包下载

    亲测可用:Pyinstaller下载地址,GitHub版本,亲测可用

    备用地址不:Pyinstaller官网下载地址,我没试过,应该也行

    程序打包

    先将需要打包的程序,我用自己的Tkint.py文件(自己python文件名字自己修改),把它复制到步骤1的目录下,也就是上面的C:\\pyinstaller-develop然后使用命令:pyinstaller -F Tkint.py(建议使用)

    注意:如果运行的是gui类型程序,你不需要弹出命令窗口,你可以采用:pyinstaller -F -w文件名.py 
    之后你的命令窗就会跑半分钟左右,跑完之后是这样的; 

    打包好的Tkint.exe已经在该目录下的dist文件夹中了。如果成功,应该多了这两个文件夹

    dist里面是这样的 
     
    然后你就可以拿去给别的机器测试你的程序啦,哈哈哈哈哈

    注意: 在同学win8/win10,64位机器上可以运行,win7 x64和其余所有32位亲测失败,会提示不兼容,所以说,如果要32/64通吃,就要在python 32位环境下(不是win32位)编译打包exe,才能在32/64成功。

    BTW

    但是,如果你使用pyinstaller -F -w文件名.py在别的电脑运行你的exe文件时候你看不到命令窗口,你会认为程序没有运行,打包后的exe比较大,以我的Tkint.py来说,160行的程序,打包后61MB,额,我直接插在U盘上在别的电脑运行,大概需要半分钟左右才能跑起来,所以请慢慢等待。。。。如果你还要改图标,创建目录啥的,请使用pyinstaller -h来查看参数

    如果觉得内容不够细致,可以参考

    用PyInstaller将python转成可执行文件exe笔记 或者用PyInstaller把Python代码打包成单个独立的exe可执行文件

    补充

    2016.7.7补坑: 基于python的参考文献生成器beta已完成,欢迎下载和使用免费下载基于python的文献生成器.exe

    2016.7.8补充: 利用Pyinstaller编译关联文件成exe,只要输入时候写成pyinstaller -F main.py related.py即可,其中main为主函数,其中有import related.py的函数,只要把重要的放前面就好啦,然后最后的exe文件名会以第一个命名,也就是最后形成一个main.exe就是酱紫。修改spec文件,重新加上参数再编译。按照正常步骤做过之后,在目录中还会有一个spec文件,用编辑器打开,之后修改参数,保存后,在原来操作的cmd上写入:pyinstaller main.spec即可,这个是我在gui图像生成exe格式时候,图片无法打包查阅到的,需要单独添加

参考技术A 试试pyinstaller

如何用python / c程序替换“cat”和“echo”读/写命令?

我无法更换设备输入/输出命令,如:

echo 100 > /dev/rtmotor_raw_l0   # output 100hz frequency
cat /dev/rtswitch0 # read switch state

输出问题(python)

我尝试用python替换该命令。

file = open('/dev/rtmotor_raw_l0','w')
file.write('100
')            # I want output in this timing
file.close()                   # output reflected after closing file

问题是关闭文件后出现输出。这是否意味着我每次想要更改其值时都必须打开和关闭此设备?此外,将'w'改为'a'也行不通。

输入问题(python)

在输入观察中几乎出现同样的问题。

file = open('/dev/rtswitch','r')
file.read()  # works
file.read()  # after first read it does't work anymore
file.close() # need to reopen the file to get newer value

我只能在每个打开文件中读取1个输入。

所以,目前我每次想要写/读新值时都要重新打开设备。有什么办法可以避免这个问题吗?

谢谢。

答案

file.flush()召唤之后尝试打电话给write()。它会将缓冲区刷新到文件,您可以读取数据。

以上是关于如何用python写exe程序的主要内容,如果未能解决你的问题,请参考以下文章

如何用批处理bat运行一个程序,但这个程序却无法在dos环境下运行,我系统是win7,求解!

python文件封装成可执行exe文件

如何用bat打开本身目录下的文件?

如何用Pyinstaller打包显示版本号的exe程序

如何用批处理开机就打开多个EXE文件

如何用2个参数多次调用一个exe(每次需要修改1个)