资讯专栏INFORMATION COLUMN

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

xiaoqibTn / 1290人阅读

摘要:现在,主流的工具有,本文只介绍的使用。准备工作开发环境和工具可以支持和。

python是脚本语言,如果你在开发机器上执行当然会很方便,可是如果你帮他人写了个脚本,想在他人机器上运行,可能会遇到点困难。

为了让脚本在他人机器上顺利执行,你首先要帮他安装python解释器,如果你import了一些库比如pandas,那这个也需要安装,甚至相关的依赖也需要安装。这个时间成本显然是很大的,这部分工作也很枯燥,甚至会影响工作积极性,因此花一点时间,学会如何将python脚本打包为.exe文件,无需再安装各种开发环境和依赖库,是一件一劳永逸的事情。

现在,主流的工具有Pyinstaller、cz_Freeze、py2exe,本文只介绍Pyinstaller的使用。


准备工作

1.开发环境和工具:

python 3.7

Pyinstaller 3.4

windows 10

Pyinstaller可以支持Python 2.7 和3.4—3.7。*

2.要打包的文件myscript.py源码:

import pandas as pd

df = pd.read_excel("D:/account.xls")
result = dr.dropna()
result.to_excel("D:/result.xls")
该源码包含pandas, xlrd, xlwt等库

3.在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等模块,一般来说可以按照下面三个步骤进行解决:
1.Pyinstalled会从本地的环境路径下找需要的模块,例如python的包都放在site-packages目录下,因此,Pyinstalled可以直接从该目录下获取需要的模块。如果本地也缺少该模块,先通过pip命令安装。例如:

pip install xlrd
pip install xlwt

2.如果你需要的模块不在site-packages,而在你指定的目录下,那打包时你可以通过-P DIR参数指定,其中DIR为你需要的模块路径:

pyinstaller -F -w -p DIR myscript.py
-p命令允许指定多个模块路径,可以用:分隔,或者多次使用这个参数,像这样:pyinstaller -p DIR1:DIR2:DIR3 myscript.pypyinstaller -p DIR1 -p DIR2 -p DIR3 myscripy.py

3.有时候并不是找不到模块,而是代码中有些模块是隐含导入的,这样的话就需要指出这些模块,才能正确的打包,可以在命令行打包时使用参数--hidden-import MODULENAME指定模块名,或者可以在打包后生成的myscript.spec文件中修改,该文件中有个参数hiddenimports=[]
配置为:

hiddenimports=["cython","sklearn","sklearn.ensemble","sklearn.tree._utils","scipy._lib.messagestream"] 

然后再运行以下命令

pyinstaller myscript.spec

到此本片文章结束。

如果遇到什么问题,欢迎大家和我交流。如有不对之处,还望指正。

参考:

https://pyinstaller.readthedo...

https://blog.csdn.net/windows...

https://zhuanlan.zhihu.com/p/...

https://zhuanlan.zhihu.com/p/...

https://www.jianshu.com/p/95c...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45050.html

相关文章

  • exe 文件反编译成 Python 脚本

    摘要:打包成单文件所使用的命令为打包成文件夹所使用的命令为不管是哪种打包方式都会留下一个文件。这样我们只需将脚本文件和脚本文件放置到同一文件夹下,运行我们的脚本。可以看到已经完美的反编译出其中的脚本好了,相信大家已经明白了反编译的原理。 近期阅读了一篇很感兴趣的文章,为免后续文章被删无法再阅读,现...

    xbynet 评论0 收藏0
  • Python如何生成windows执行exe文件

    摘要:为什么要生成可执行文件不需要安装对应的编程环境可以将你的应用闭源用户可以方便快捷的直接使用打包工具安装如果你的网络稳定,通常直接使用下面的命令安装即可当然了,你也可以下载源码包,然后进入包目录执行下面的命令,同样可以安装前提是需要安装安装过 为什么要生成可执行文件 不需要安装对应的编程环境 可以将你的应用闭源 用户可以方便、快捷的直接使用 打包工具 pyinstaller 安装py...

    Crazy_Coder 评论0 收藏0
  • 全网首份Python打包工具Pyinstaller实战指南,如丝滑般体验

    摘要:最好是客户双击,完事儿。目前已经兼容,以及和。一共会有个对象,分别是。,就是我们的工作目录,存放我们的数据。编译打包最后,我们执行就好了。打包的可执行文件会在里,中是一些打包时候需要的文件。输出中最后有字样,就算成功了。 showImg(https://img-blog.csdnimg.cn/20190303211533768.png?x-oss-process=image/water...

    caikeal 评论0 收藏0
  • 使用pyinstallerpython打包exe

    摘要:起因是从某发现了一个站挂机助手,依赖于直播的一个库,作者的处理方式是将依赖的库打包为,然后使用进行调用。它能够在等操作系统下将源文件打包,通过对源文件打包,程序可以在没有安装的环境中运行,也可以作为一个独立文件方便传递和管理。 起因是从某 hub 发现了一个B站挂机助手,依赖于直播的一个库,作者的处理方式是将依赖的库打包为 exe,然后使用 python 进行调用。 然后因为依赖的 l...

    AnthonyHan 评论0 收藏0

发表评论

0条评论

xiaoqibTn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<