600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 使用pyinstaller将python脚本转成EXE可执行文件遇到的问题和总结

使用pyinstaller将python脚本转成EXE可执行文件遇到的问题和总结

时间:2021-03-16 03:35:38

相关推荐

使用pyinstaller将python脚本转成EXE可执行文件遇到的问题和总结

使用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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。