今天帮朋友实现一个读取图片输出所有点rgb值得小脚本,但是朋友没有python环境,更不用说装各种依赖库了。所以就想把python转成exe发给他。
现在常用的工具有
py2exe: 不推荐,项目最后更新日期是2008-11-16,对于依赖的管理非常糟糕,写个简单的hello world调试成功,但是引入Pillow包后报一堆错误,甚至有缺少“carbon”包的错误,而这个包是mac特有的。看了stackoverflow上的解释,py2exe的依赖会自作聪明,比如你引入的头文件里有判断操作系统并据此引入不同文件的语句,那么py2exe会把不管条件真假的所有语句下的引用文件的依赖添加上。
pyinstaller:最终使用pyinstaller成功完成任务,pyinstaller的缺点就是最终的输出结果除了exe文件还有一堆dll以及pyd,不如一个单一的exe那么优雅。
cx_freeze:没有使用,不多说了,不过看最后更新日期是14年底,应该也还靠谱。
下面就说说pyinstaller的安装和使用。
pip install pyinstaller
在我在windows平台上使用,所以还需要pywin32.
pip install pywin32
但是我在用pip安装pywin32的时候出了些问题,用pip search可以搜索到,但是pip install安装就说没有这个包。
最终去官网上下载的,注意区分32位和64位版本。
安装完成后就可以使用了。
pyinstaller image_info.py
在同一目录下会产生dist和build两个文件夹。
此时已经有dist/image_info/image_info.exe以及一堆dll和pyd,image_info.exe依赖其他几个文件。所以可以在image_info下调用exe也可以使用绝对路径调用,只把image_info.exe拷出来是不行的,要拷就要全部拷出。