ldehai

让每个人都能接受平等的教育

嗨,我是刘德海 (@ldehai),iOS / Mac 独立开发者,现居南京。我创建了AventLabs,一个在线学习编程和设计的平台,主要面向初学者。


我正在写一本书《每个人都会编程》

Python程序打包成EXE--使用pyinstaller打包matplotlib、scipy、wxpython

用python帮朋友写了个科学计算的程序,用到了matplotlib和scipy,以及wxpython。代码写完,发现不能直接拿给朋友用,windows系统默认是没有运行环境的,得装python,matplotlib,scipy以及其他的运行库。这对于程序小白来说实在强人所难。好在有pyinstaller,可以用它打包成一个exe文件,所有的库都在一起了。妈妈再也不用担心没有环境跑程序了。 到pyinstaller官网下载安装包。 详细安装说明见官方文档

这里简要说明一下步骤: 直接下载压缩包,现在的版本是2.1.解压后打开命令行,执行如下命令:

    c:\python setup.py install

可以用如下命令检查是不是已经装好了

    c:\pyintaller --version

ok,pyinstaller 装好了,开始打包

    c:\c:/python27/python.exe c:/pyinstaller/pyinstaller.py --noconfirm --noconsole --onefile --icon=Icon.ico myapp.py

解释一下几个参数:

noconfirm:在打包过程中不需要人工确认。

noconsole:打包后的程序运行时没有命令行窗口(在测试打包的过程中,可以把这个参数去掉,这样运行的时候可以从命令行查看出错信息,所有错误排除后再加上)。

onefile:顾名思义就是打包成一个文件,如果不加就是一个exe加一个文件夹,文件夹里存放需要的各种库文件。

icon:指定打包后的exe文件的图标(运行时窗口的图标是在程序里设定的)

由于pyinstaller2.1正式版还不支持scipy库,直接运行会报找不到scipy module。而developer版本已经支持了,所以去下载开发版重新安装。pyinstaller的代码在[github上(https://github.com/pyinstaller/pyinstaller),选择develop分支下载。 pyinstaller对第三方库的支持情况见这里:SupportedPackages

安装步骤同上,不再赘述。安装完运行打包脚本会发现还有错误

    ImportError: No module named scipy.sparse.csgraph._validation

这是因为pyinstaller没能自动把_validation库加进来,我们就在代码里手动加上吧。

    from scipy.sparse.csgraph import _validation

再次运行,应该没问题了。

最近的文章

File Already Exists but Should Not Pyconfig

接上一篇,python项目用到了scipy计算模块,之后用pyinstaller打包后,每次运行就会报警告file already exists but should not:……./pyconfig.h。虽然不影响运行,还是觉得有必要解决这个问题,在搜索到stackoverflow这个帖子后,问题解决。问题的原因是pyinstaller打包时pyconfig.h多打了一次,所以会报已经存在了。这个解决方案就是把多余的pyconfig.h去掉。下面开始详细说明如何修改:上一篇讲到使用如下命...…

pyinstaller继续阅读
更早的文章

热心的加拿大设计师Andrew

今天收到Andrew的邮件:I'm a graphic designer and I really like your app. Would you be interested in letting me update the icon for you? I'll do it for free.真的挺喜欢这些人,愿意为了自己喜欢的东西付出,不要回报。对我来说也是一种莫大的鼓舞。最新的设计图,还可以吧,比原来的提升不少。loading page…

杂谈继续阅读