py脚本编译成exe
‘壹’ 将python打包成exe
return 应该放在一个函数里面的,
将python打包成exe的程序有很多,比如py2exe、PyInstaller等等,但是到目前为止,它们对python3.1支持的都不好,所以这里我要介绍一下cx_freeze 4.2.2,它还能支持跨平台,可以在windows和linux运行。
cx_freeze的下载网址为 http://sourceforge.net/projects/cx-freeze/files/ ,要根据已安装的python版本进行选择。比如我使用的是python3.1,所以就要下载cx_Freeze-4.2.2.win32-py3.1.msi这个文件。运行这个安装包后,相关程序就会被拷贝到python的目录下。主要在两个地方,一个是C:/Python31/Scripts,另一个是C:/Python31/Lib/site-packages/cx_Freeze
在以前版本的cx_Freeze中,是通过FreezePython.py这个脚本将py转换为exe,而在4.2.2这个版本中,FreezePython.py已经不见了,主要的工作交给了C:/Python31/Scripts下的cxfreeze.bat来完成。
使用cx_Freeze完成python打包exe主要有两种方法:
第一种,直接运行cxfreeze.bat通过:
先进入cmd命令行,进入C:/Python31/Scripts目录,然后运行cxfreeze.bat -h 就可以看到它的使用说明了。我们可以用cx_freeze自己的sample做个试验。
进入到c:/python31/scripts/下,运行
cxfreeze C:/Python31/Lib/site-packages/cx_Freeze/samples/PyQt4/PyQt4app.py --install-dir=d:/123
pytqt4app.py就会被打包成exe,并且它所用到的库文件,也被一并考到了d:/123目录下。
‘贰’ 怎样用pycharm 把.py文件编译成可以单独运行的exe文件
解释器文件和解释器
先解释两个概念;解释器文件和解释器。
l 解释器文件:一种文本文件,开头通常是:#! pathname [option-argument];比较常见的是#! /bin/bash,shell脚本和python脚本都属于解释器文件。
l 解释器:解释器文件第一行中pathname指定的程序,如bash。
3.1 解释器文件的执行
当执行(exec)"解释器"文件时,exec系统调用会识别这种文件,内核使调用exec函数的进程实际执行的并不是该"解释器文件",而是pathname指定的解释器。
我们可以自己写一个解释器,如之前所写的foo.c:
l foo.c
#include <stdio.h>
int
main(int argc,char* argv[])
{
‘叁’ 如何使用脚本程序做一个exe 比如用python写一个exe文件 目的是打开桌面上的1.txt
写py程序,两行代码如下:
importos
os.system("派稿春notepadD:/1.txt")下载pyinstaller,直接pip install
在py文件敬嫌目录下打开命令行窗口,输入pyinstaller -m -F xxx.py,执行
系统会自动生成一尘耐个dist文件夹,一般该exe文件会被杀毒软件干掉,找回文件即可
‘肆’ 使用Pyinstaller打包成EXE文件
pyinstaller能够在Windows、Linux等操作系统下将Python脚本打包成可直接运行程序。使Python脚本可以在没有安装Python的环境中直接运行,方便共享。
python 2.7.12 + Windows7
1.待转换的.py文件绝对路径最好不要包含中文字符。容易出现一些莫名其妙的问题。
2.python中需要有.py文件中用到的第三方库。否则在转换后的.exe文件中会出现不符合预期的结果。
1.配置pip镜像源。
在用庆族户家目录下创建pip目录和pip.ini文件。方法如下
step1: 获取HOMEPATH变量对应的路径,执行 set HOMEPAT H也可以执行 echo %HOMEPATH% 获取。
上述结果说明用户家目录HOMEPATH对应的路径为C:UsersAdministrator。
step2: 在C:UsersAdministrator目录下创建pip目录,斗启并在pip目录下创建pip.ini文件。如果已经有pip目录和pip.ini文件,跳过。 特别说明的是,pip.ini文件的后缀是.ini,注意隐藏扩展文件誉销弊名可能造成的影响。 在pip.ini文件中添加相关内容并保存:
step3: 测试pip工具,确认是否能够自动安装第三方库,如使用pip自动安装Pexpect类库。
step4: 进入python工具,执行import pexpect导入模块命令,没有报错说明pip自动安装pexpect库成功。
step5: 结束安装,后续安装第三方库就可以在任意路径下直接执行pip install ${PackageName}进行安装。
2.打开cmd命令行窗口,输入 pip install pyinstaller ,安装pyinstaller库。
3.确认pyinstaller安装结果,位于c:Python27Scripts路径下。执行 where pyinstaller 查看
pyinstaller [options] script
例如: pyinstaller -F myscript.py
options常用选项说明:
pyinstaller其实就是把python解释器和脚本打包成一个可执行文件,和编译成真正的机器码是完全两回事。所以打包不一定会提高运行效率,可能会降低运行效率,但是好处是在运行者机器上不用安装python和脚本所依赖的库。
输入指定的脚本后,首先pyinstaller会分析该脚本所依赖的其他依赖,然后进行查找、复制,把所有相关的依赖都收集起来并进行加密处理,包括python解释器,最后把这些文件放在一个目录下,或者打包到一个可执行文件,然后就可以直接运行所生成的可执行文件。
需要注意的是,使用pyinstaller打包生成的可执行文件,只能再和打包机器系统相同的环境下运行。32位python环境打包的程序可以运行在32/64位windows系统上。64位python环境打包的程序只能运行在64位windows系统上。所以如果想打包程序的话,建议使用32位python环境打包。
1.确认待转换的.py文件可正确运行,不存在语法错误。如ccc.py
2.执行 pyinstaller -F ${Python脚本名} 完成文件转换。.exe文件生成的绝对路径会在倒数第二行显示,通常位于当前目录下dist所在目录下。转换后的.exe文件名与python文件名相同。如下图所示
1.如果Python脚本使用到了第三方库,如何打包?
方法一:将第三方库对应的包复制到待打包python脚本的同目录下,再执行打包命令。
方法二:pyinstaller.exe -F 路径文件名.py 路径文件名.py
2.我的python脚本主要是命令行输出,但是程序执行完就退出无法查看相关信息,如何处理?
在python脚本最后一行添加命令:os.system('pause') 或者 raw_input('Press enter any key to exit...')
3.我想给我的打包后的执行程序换个图标,如何处理?
使用参数-i。如命令:pyinstaller -F -i tupianqq.ico ccc.py。文件后缀名必须是.ico
4.程序运行出现CMD窗口,如何去除?
带上参数-w即可。pyinstaller.exe -F call_login.py -w (-w表示去掉控制台窗口显示)
5.pip配置镜像源参考