使用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语句后面)

 

  1. import jieba

  2. jieba.set_dictionary("./dict.txt")#这里的意思也是给他指明去哪里找配置文件等信息

  3. 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

程序可以跑了:

希望对大家有所帮助。

参考了:https://blog.csdn.net/qq_26376175/article/details/69680992

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果在使用 pyinstaller 编译 Python 脚本exe执行文件后,双击 exe 文件后程序瞬间就会关闭,那么可能是因为编译过程中出现了错误。你可以尝试使用 pyinstaller 的 `--debug` 选项来调试编译过程中的错误。 例如,你可以使用以下命令来编译 Python 脚本: ``` pyinstaller --debug script.py ``` 这将生一个名为 `script.exe` 的可执行文件,并在命令行窗口中显示编译过程中的错误信息。你可以通过查看这些信息来了解 exe 文件瞬间关闭的原因。 另外,你还可以尝试使用 pyinstaller 的 `--log-level` 选项来查看日志信息,这可能会有助于你找到问题的原因。例如,你可以使用以下命令来编译 Python 脚本: ``` pyinstaller --log-level=DEBUG script.py ``` 这将生一个名为 `script.exe` 的可执行文件,并在命令行窗口中显示更多的日志信息。 此外,如果 exe 文件瞬间关闭的原因是 Python 脚本中的错误,你可以尝试使用 Python 自带的调试工具来查找问题。例如,你可以在 Python 脚本中加入 `import pdb; pdb.set_trace()`,然后使用 pyinstaller 编译脚本,这样在执行 exe 文件时 ### 回答2: Python使用pyinstaller编译生执行文件后,双击exe打开瞬间就关闭通常是由以下问题导致的: 1. 异常错误:程序在某行代码运行时发生异常,导致程序崩溃并关闭。这可能是由于编译过程中某些依赖项未被正确打包导致的。解决方法是检查代码中存在的问题,并确保程序所需的所有依赖库被正确地导入和使用。 2. 控制台窗口闪现:在使用pyinstaller编译生exe时,默认情况下会同时生一个控制台窗口。在某些情况下,控制台窗口可能会在打开后立即关闭,导致程序无法正常运行。解决方法是使用命令行参数`--noconsole`或修改pyinstaller配置文件,将控制台窗口禁用。 3. 缺少资源文件:如果程序依赖于某些资源文件(如图像、配置文件等),编译生exe文件可能无法正确地访问这些资源文件,导致程序无法正常运行。解决方法是确保资源文件被正确地打包到可执行文件中,并在代码中使用正确的路径来访问这些资源。 4. 运行权限问题:有时在某些操作系统上,可执行文件需要管理员权限才能正常运行。如果没有足够的权限,双击exe文件可能会导致程序瞬间关闭。解决方法是右键点击exe文件,选择“以管理员身份运行”来启动程序。 总结Python使用pyinstaller编译生exe文件瞬间关闭可能是由于代码异常、控制台窗口闪现、资源文件缺失或权限问题所导致。需要逐一排查问题并解决,以确保程序能够正常运行。 ### 回答3: Python使用pyinstaller编译exe执行文件后,双击exe打开瞬间就关闭可能是由于以下几个问题导致: 1. 程序报错:在编译过程中,可能出现了错误,但是这些错误并没有被正确地显示出来。运行时若有报错,程序会立即关闭,无法执行正确的操作。在编译之前,最好在命令行中运行.py文件,以查看是否有报错信息。如果有报错,需要修复并重新编译。 2. 缺少依赖项:有时候,编译的exe文件可能缺少某些依赖项,导致程序无法正常执行。解决这个问题的方法是手动将缺少的依赖项添加到exe文件的目录中,或者使用pyinstaller的"--add-data"参数将依赖项包含在exe文件中。 3. 资源文件路径问题:当程序涉及到读取外部文件(如图片、音频等)时,如果资源文件的路径不正确,程序也会在运行时立即关闭。需要确保在编译exe文件时,资源文件的路径是正确的。 4. 使用了图形界面相关的库:在编译exe文件时,如果使用了某些图形界面相关的库(如PyQt、Tkinter等),可能会出现兼容性问题导致程序无法正常运行。这时需要查看官方文档或调整编译参数以解决兼容性问题。 总之,双击exe文件打开后立即关闭可能是由于程序报错、缺少依赖项、资源文件路径不正确或者兼容性问题导致的。解决这个问题的方法是仔细检查编译过程中是否有报错,确保所有的依赖项都被正确处理,并检查资源文件的路径是否正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值