将python打包为exe可执行文件Pyinstaller工具

python是脚本语言,如果你在开发机器上执行当然会很方便,可是如果你帮他人写了个脚本,想在他人机器上运行,可能会遇到点困难。 为了让脚本在他人机器上顺利执行,你首先要帮他安装python解释器,如果你import了一些库比如pandas,那这个也需要安装,甚至相关的依赖也需要安装。这个时间成本显然是很大的,这部分工作也很枯燥,甚至会影响工作积极性,因此花一点时间,学会如何将python脚本打包为.exe文件,无需再安装各种开发环境和依赖库,是一件一劳永逸的事情。 现在,主流的工具有Pyinstaller、cz_Freeze、py2exe,本文只介绍Pyinstaller的使用。 准备工作开发环境和工具: python 3.7Pyinstaller 3.4windows 10Pyinstaller可以支持Python 2.7 和3.4—3.7。*要打包的文件myscript.py源码:import pandas as pddf = pd.read_excel('D:/account.xls')result = dr.dropna()result.to_excel('D:/result.xls')该源码包含pandas, xlrd, xlwt等库在windows上安装Pyinstaller根据Pyinstaller官方表述,在windows上安装Pyinstaller需要先安装pywin32 或 pypiwin32, 否则待会儿转换时,会提示无法找到win32com模块的错误,虽然报错缺win32com,但你要清楚缺的其实是pywin32 或 pypiwin32。先用下面pip命令查看自己是否已安装该模块:pip list如果没有找到,在pywin32下载地址下载对应版本的pywin32,或者直接用下面命令安装pypiwin32:pip install pypiwin32最后安装Pyinstaller:pip install pyinstaller开始打包可以使用下面命令打包pyinstaller myscript.py该命令执行后, pyinstaller会分析myscript.py文件,并且在脚本script.py所在文件夹中: 生成myscripy.spec创建文件夹build在build文件夹中生成日志文件和运行所需文件创建dist文件夹在dist文件夹中创建可执行文件夹myscript,在myscript文件夹中,就可以找到myscript.exe可执行文件上面命令生成了很多依赖文件,如果想打包为独立单一的.exe文件,使用-F参数pyinstaller -F myscript.py默认生成的执行文件执行时,会弹出一个命令行的窗口,如果不需要弹出,可以再加个-w参数pyinstaller -F -w myscript.py遇到的问题打包过程中难免会遇到问题,一般都会遇到缺少模块的问题,比如,在对myscript.py打包时会报错ModuleNotFoundError,缺少xlrd, xlwt等模块,一般来说可以按照下面三个步骤进行解决: Pyinstalled会从本地的环境路径下找需要的模块,例如python的包都放在site-packages目录下,因此,Pyinstalled可以直接从该目录下获取需要的模块。如果本地也缺少该模块,先通过pip命令安装。例如:pip install xlrdpip install xlwt如果你需要的模块不在site-packages,而在你指定的目录下,那打包时你可以通过-P DIR参数指定,其中DIR为你需要的模块路径:pyinstaller -F -w -p DIR myscript.py-p命令允许指定多个模块路径,可以用:分隔,或者多次使用这个参数,像这样:pyinstaller -p DIR1:DIR2:DIR3 myscript.py或pyinstaller -p DIR1 -p DIR2 -p DIR3 myscripy.py有时候并不是找不到模块,而是代码中有些模块是隐含导入的,这样的话就需要指出这些模块,才能正确的打包,可以在命令行打包时使用参数--hidden-import MODULENAME指定模块名,或者可以在打包后生成的myscript.spec文件中修改,该文件中有个参数hiddenimports=[] 配置为: hiddenimports=['cython','sklearn','sklearn.ensemble','sklearn.tree._utils','scipy._lib.messagestream'] 然后再运行以下命令 pyinstaller myscript.spec到此本片文章结束。 如果遇到什么问题,欢迎大家和我交流。如有不对之处,还望指正。 ...

July 1, 2019 · 1 min · jiezi

使用pyinstaller将python打包为exe

起因是从某 hub 发现了一个B站挂机助手,依赖于直播的一个库,作者的处理方式是将依赖的库打包为 exe,然后使用 python 进行调用。 然后因为依赖的 live 库版本太旧有 bug,作者也没有更新打包的 exe 文件,只能自己动手,进行替换。 准备工作首先当然是安装 pyinstaller pip install pyinstaller PyInstaller 是一个十分有用的第三方库,可以用来打包 python 应用程序,打包完的程序就可以在没有安装 Python 解释器的机器上运行了。它能够在 Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理。 使用一般的用法网上能搜出一大把,常规流程: pyinstaller -F helloworld.py 其中,-F 表示打包成单独的 .exe 文件,这时生成的 .exe 文件会比较大,而且运行速度回较慢。 另外,-i 还可以指定可执行文件的图标; -w 表示去掉控制台窗口,这在 GUI 界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧! 执行步骤: 1、在脚本目录生成 helloworld.spec 文件; 2、创建一个 build 目录; 3、写入一些日志文件和中间流程文件到 build 目录; 4、创建 dist 目录; 5、生成可执行文件到 dist 目录;打包静态文件当你的代码需要调用一些图片和资源文件的,这是不会自动导入的,需要你自己手动复制进去才行。不然 exe 文件运行时命令窗口会报错找不到这个文件。 ...

May 28, 2019 · 1 min · jiezi