一,写了一个抢火车票的程序.无奈别人的电脑没又装python没法运行.然后就想着把我写好得程序转成.exe在windows上直接运行,岂不美哉.

其实很简单,有一个现成的pyInstaller工具,直接拿来用就可以了。

二,pyInstaller安装配置

1,打开网址:pyInstalller下载网址

如:

看好你的python版本 我的是python 2.7,选择的是 PyInstaller 3.3.1 (tar.gz) 。 (查看版本,直接在命令框中输入 python 就会弹出你安装的python版本了)

2,下载并解压后目录如下:(建议和python放在相同的目录下)

3,还需要下载一个pywin32(pywin32网址)

4,双击pywin32-221.win-amd64-py3.5.exe安装,注意安装的时候会自动检测之前安装的Python。下一步,下一步。
5,在CMD命令行进入Python3.5目录下的Scripts目录并执行:python pywin32_postinstall.py -install命令(这里需要使用管理员身份打开cmd,win10下右键单击菜单即可)
6,在CMD命令行中进入D:\Programs\Python\pyinstaller-pyinstaller目录(之前解压的pyInstaller文件夹),然后执行:python setup.py install

三,制作exe

1,先写一个hello.py

# coding:utf8
print(“Hello Word”)

 

2,将hello.py放到目录D:\Programs\Python\pyinstaller-pyinstaller下。

3,在CMD命令行中切换到要打包的程序所在目录,并执行命令:python pyinstaller.py -F hello.py

参数

含义

-F

指定打包后只生成一个exe格式的文件

-D

–onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)

-c

–console, –nowindowed 使用控制台,无界面(默认)

-w

–windowed, –noconsole 使用窗口,无控制台

-p

添加搜索路径,让其找到对应的库。

-i

改变生成程序的icon图标

4,生成了一个新目录D:\Programs\Python\pyinstaller-pyinstaller\hello
在该目录的dist文件夹下生成了一个hello.exe。

5,运行hello.exe

注意事项:

  1. 生成文件中,可能包含一个以warn开头的类似warndemo.txt的警告文件
    这很明显,是因为程序无法自动导入很多的库
    使用-p参数添加搜索路径
pyinstaller.py -F -p C:\python27; ..\demo.py #注意当前目录是我在下一级目录里

2.添加icon图标

pyinstaller.py -F -p C:\python27; -i ..\a.ico ..\demo.py

后话:

我按照自己写的步骤在自己电脑上试了一下是可以的,但是将exe拷贝到别人电脑上用了一下,发现出了一个这样的错误

F:\qq文件\a>AutoRecord.exe 
Traceback (most recent call last): 
File "<string>", line 21, in <module> 
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 507, in install 
File "C:\Python27\Lib\site-packages\PyInstaller\loader\pyi_importers.py", line 156, in __init__ 
ImportError: Can't load frozen modules.

这个问题是因为他的运行目录里面包含了中文,要处理中文要从github上面安装最新的pyinstaller

git clone https://github.com/dkw72n/pyinstaller.git 
python setup.py install

然后重新打包.py文件再次发给对方就可以解决这个问题了

命令


pyinstaller -F xxx.py