使用pyinstaller将python脚本转成EXE可执行文件可以将python脚本在没有安装python环境的电脑上运行。
开始:
安装pywin32
1.去官网下载安装适合自己python以及windos版本的pywin32
2.直接pip install pywin32
安装pyinstaller
1.去官网下载安装
2.pip install pyinstaller
使用pyinstaller
-F 表示生成单个可执行文件
-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标
如果是一个简单的脚本没有外部包(第三方包)的引用,可以直接使用转换(python自带的包例如:sys,re等模块不算外部包)
1。将需要打包的文件放在解压得到的Pyinstaller文件夹中,打开cmd窗口,把路径切换到当前路径打开命令提示行,输入以下内容(最后的是文件名):
python pyinstaller.py -F myfile.py
2.
打开cmd窗口,把路径切换到文件所在路径(文件随便放在哪里都行)打开命令提示行,输入以下内容(最后的是文件名):
pyinstaller -F myfile.py
转换之后会在当前目录(cmd命令行模式下当前所在目录)生成两个文件夹,可执行文件在dist目录下
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如果脚本里引用了第三方库,转换前需要把该库目录复制一份到脚本所在目录下,例如我要转换的脚本用到了jieba,需要在本地找到jieba复制到我的脚本所在目录。
这一步对于大多数库都是可以的,但不包括jieba。因为jieba在初始化的时候默认是去Python路径下去寻找dict.txt文件。而我们使用PyInstaller打包时,并没有将该dict.txt文件打包。
所以exe文件虽然打包了,但运行时会报错大意是找不到dict.txt,userdict.txt,idf.txt等等配置文件(取决于你用到的jieba的什么功能)
此处我直接简单粗暴修改了jieba源码直接指定文件目录
这也导致了打包完的程序必须解压到C盘下,因为写的是绝对路径,相当于告诉jieba去哪里能找到需要的文件。此处应该能写成相对路径,不过程序里应该要指明引用的jieba包是哪一个
===============================================================================================================================================================
后查看网络还可以这样:
import jieba后马上设置字典的路径进行初始化,这里用相对路径。(必须紧跟在import语句后面)
importjieba
jieba.set_dictionary("./dict.txt")#这里的意思也是给他指明去哪里找配置文件等信息
jieba.initialize()
然后用PyInstaller打包好程序后,把dict.txt放在程序所在目录就可以了
特别的地方:
要是你只用了结巴分词的分词模块,那上面就可以解决问题了,但如果你还用了结巴分词里面的analyse模块,用到了计算df-idf值的功能,那还需要把idf.txt 的路径给改了。和上面一样的方法,写下面几行代码:
from jieba import analyse
jieba.analyse.set_idf_path("./idf.txt")#这里的意思也是给他指明去哪里找配置文件等信息
然后比上面麻烦一点的是,不仅需要吧idf.txt放在程序所在目录,而且还要在程序所在目录创建一个文件夹“jieba”, 在此文件夹里也放上idf.txt
程序可以跑了:
希望对大家有所帮助。
参考了:/qq_26376175/article/details/69680992