小白使用pyinstaller的一些排错技巧

pyinstaller安装:

有三种方法:

1.在pycharm里安装

2.通过官网下载

3.在命令行下用pip下载

三种都试了,感觉用第三种更好。直接pip下载完就可以了,不用去配。可能遇到一些安装失败的问题,这就需要去网上查些资料了。

 

检查是否安装成功:

安装成功后,再输入一遍pip install pyinstaller,出现类似下面这种输出就成功了。

小白使用pyinstaller的一些排错技巧_第1张图片

Requirement  already satisfied 意思是 请求实际上已完成 嘛。

如果第一次用pyinstaller ,还不确定安装成功怎么办??

可以自己写一个简单的py程序,把他封装成exe 。再试试能不能打开。

比如写以下程序试试:示列一:

Text.py:

def text():
    print("这是一次测试!")
    input()

Try.py:

from Text import text
text()

关于封装:

先在命令行下到达需要封装程序那个文件:

在此路径下输入:

pyinstaller  -F C:\Users\小尼\Desktop\抗疫\excel\Try.py -p C:\Users\小尼\Desktop\抗疫\excel\Text.py -p ....py

我是这样理解上面这句话的。

pyinstaller 表示使用 pyinstaller 进行封装。

-F  表示封装时,结果只有一个.exe文件。

-p 后接主程序还需要引用用到的自定义 .py文件。例如示列一的Try.py

-p ....py  表示主程序可能会引用其他更多的自定义 .py文件

-w  指定程序运行时不显示命令行窗口(仅对 Windows 有效)

这些.py文件我都是用了绝对路径,因为怕pyinstaller 找不到对应的 .py文件。

 

嗯,就这样封装试试。如果打开exe 可以正常运行,表示安装的pyinstaller 是没问题的。同时在这个过程也清楚了用pyinstaller的使用步骤。

 

我是用pyinstaller 封装一个pygame 写的小游戏。游戏中用的了外部字体,外部图片,外部音频。如果按照上述方法封装后运行不了。。。

毕竟程序中用这些外部文件时,使用的是相对路径。当然如果用绝对路径应该可以打开。

其实,封装后,相当于所有被封装的.py文件都和到.exe中了。那么用.exe时,当前程序文件的路径就是当前.exe文件下。

可以试验一下:

在要封装的程序下加上:

import sys
print(sys.argv[0])
input()

输出当前文件的路径,那么封装后,依然可以知道程序的路径。

 

我们可以把这个.exe文件复制一份,放到我们主程序.py文件下的路径的就可以解决引用文件的路径问题了。如下:小白使用pyinstaller的一些排错技巧_第2张图片

 

看到一些博客说改上面的 .spec文件,再封装一次。其实也不需要。

改.spec文件再封装一次也是为了解决外部文件引用路径问题。这种改.exe的位置也是解决外部文件引用路径问题。

 

封装后,点开.exe 闪退问题解决:

封装后,如果程序出现编译错误。就直接退出,看不到Traceback的信息了。

可以在命令行下,运行.exe,就可以看到Traceback的信息了。可是这种方法的Traceback信息有时不准确。

小白使用pyinstaller的一些排错技巧_第3张图片

 

pyinstaller 有一些封装限制的。比如程序中不可以用.ogg .mp3 格式的音频。只可以用.wav 格式的音频等等。。。。。

出现闪退,很多时候都是这些封装限制造成的。

 

这么多行代码,怎么知道那些代码不可以被封装??

我的解决方法是每个py文件的 代码都运行一次,再封装,看看封装后能不能正常运行。

能运行就证明这整个py文件的代码都是可以被封装的。不能的话,则重点看这个py文件那些代码不能被封装。

 

 

你可能感兴趣的:(其他)