一,写了一个抢火车票的程序.无奈别人的电脑没又装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
参数 | 含义 |
| 指定打包后只生成一个exe格式的文件 |
| –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项) |
| –console, –nowindowed 使用控制台,无界面(默认) |
| –windowed, –noconsole 使用窗口,无控制台 |
| 添加搜索路径,让其找到对应的库。 |
| 改变生成程序的icon图标 |
4,生成了一个新目录D:\Programs\Python\pyinstaller-pyinstaller\hello
在该目录的dist文件夹下生成了一个hello.exe。
5,运行hello.exe
注意事项:
- 生成文件中,可能包含一个以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