前言:
今天在网上看了很多教程,最后还是在运行pyinstaller命令行时解决
环境配置:python 2.7.9 32位,setuptools 19.2版,WIN 64位
1.安装PyInstaller和pywin32
1.1 Pyinstaller
安装略
可以只是生成单独的可执行程序
且支持的版本也多:2.3到2.7都支持。以及x64也支持
也可以自定义图标
1.2 pywin32
2. 封装成exe
2.1 示范程序用了pandas包
import pandas as pd
import sys,os
import ConfigParser
2.2 pyinstaller使用封装语句
基本语句
pyinstaller -F demo.py
一般来说用这个就可以了
-D, --one-dir打包成一个文件夹,默认
-F, --one-file打包成一个exe文件
-p DIR, --paths DIR添加路径,一般用来添加程序所用到的包的所在位置
-c, --console, --nowindowed提供程序视窗,程序有输入输出的界面,默认
-w, --windowed, --noconsole无视窗,程序后台运行
-i , --icon 添加icon图标
3. 运行时遇到的问题
生成的exe出现ImportError
image.png
4. 解决方法
4.1 看CMD提示,在封装时导入缺失的包
pyinstaller -F -w -i xxx.ico yyy.py --hidden-import=pandas._libs.tslibs.timedeltas
4.2 安装对应的hook
太麻烦,此处略
其他注意的东西
文件夹注意...\dist(生成的exe所在文件位置)和...\build(生成的文件夹所在位置)
warnXXX.txt 里面包含错误信息,如
missing module named pyimod03_importers - imported by C:\Python27\lib\site-packages\pyinstaller-3.4.dev0_ab8fd9753-py2.7.egg\PyInstaller\loader\rthooks\pyi_rth_pkgres.py
missing module named 'multiprocessing.popen_fork' - imported by C:\Python27\lib\site-packages\pyinstaller-3.4.dev0_ab8fd9753-py2.7.egg\PyInstaller\loader\rthooks\pyi_rth_multiprocessing.py
missing module named 'multiprocessing.popen_spawn_win32' - imported by C:\Python27\lib\site-packages\pyinstaller-3.4.dev0_ab8fd9753-py2.7.egg\PyInstaller\loader\rthooks\pyi_rth_multiprocessing.py
missing module named 'multiprocessing.spawn' - imported by C:\Python27\lib\site-packages\pyinstaller-3.4.dev0_ab8fd9753-py2.7.egg\PyInstaller\loader\rthooks\pyi_rth_multiprocessing.py
附录:正确生成exe时控制台信息
c:\Python27>pyinstaller -F Df2Csv.py --hidden-import=pandas._libs.tslibs.timedeltas
116 INFO: PyInstaller: 3.4.dev0-ab8fd9753
<