Pycharm, 生成可执行文件,Unhandled exception in script报错

我是小鱼,今天是2021年8月31日,这是我学习python的第一篇文章,用于记录在python学习中遇到的问题。

环境:Pycharm, terminal生成.exe文件

项目:书《Python编程 – 从入门到实践》中第12-14章《外星人入侵》的游戏

问题描述,在Pycharm中运行正常,生成exe文件也成功了。但是双击运行时,出现下图错误

“Failed to execute script’alien_invasion”due to unhandled exception: expected str, bytes or os. PathLike object, not BytesIO

Pycharm, 生成可执行文件,Unhandled exception in script报错

在CSDN上搜索,有个帖子说,是因为使用 pyinstaller -w -F 产生的,换成pyinstaller -c -F就好。

当我更换命令后,不再出现上面报错框,但是出现一个黑色的框,一闪而过。程序依然无法使用。拼手速把一闪而过的黑框截屏下来。如下:

Pycharm, 生成可执行文件,Unhandled exception in script报错

从上面的提示里找到对应文件, 第14行,如下:

Pycharm, 生成可执行文件,Unhandled exception in script报错

这里本身是有个报警,但是在pycharm里运行是没有影响的。因为我对pygame没有那么熟,只是按照说上说sysfont第一个参数写None, 后来的解决方法是改成”arial”,因为我确定系统里是有这个字体的。

报警解除后再次生成.exe,运行再次出错。用-c命令快速截图看原因

Pycharm, 生成可执行文件,Unhandled exception in script报错

找到相应的行,如下:

Pycharm, 生成可执行文件,Unhandled exception in script报错

第14行是一个图片的相对位置,生成的.exe文件是放在dist文件夹下的,这个在别人的帖子里提到过,因为是相对位置,所以.exe文件必须要与images文件夹在同一个目录下。移动后问题完美解决。

简单总结一下,-w的命令虽然能出提示框,但是没有具体的错误位置,-c的命令可以有具体位置,但是出现的太快。这两个命令都很有用。另外,在pycharm中尽量不要有报警,即使可以在pycharm中运行,但是不能保证能生成可执行文件。

第一次自己生成了一个小游戏。纪念一下。

Original: https://blog.csdn.net/yuxingdeyun/article/details/120013000
Author: yuxingdeyun
Title: Pycharm, 生成可执行文件,Unhandled exception in script报错



相关阅读

Title: python绘制复杂表格_Matplotlib绘制表格

emememem……

今天有个需求,需要读取两个csv文件然后依据数据的差异动态绘制出表格,然后搜了一圈利用Python的攻略,发现都无甚用,还是最终回到了Matplotlib的怀抱,发现网上讲解利用Matplotlib绘制表格的博文太少(PS:浪费了我很多时间),于是以本文记之。Pandas 中文手册​www.pypandas.cn

Pycharm, 生成可执行文件,Unhandled exception in script报错Matplotlib 中文手册​www.matplotlib.org.cn

Python 可以利用Pandas来读取csv格式的文件,建议标准化csv文件(第一行为表头,或者省略表头),Pandas可以自动识别出数据的格式:obj(string),float,int

import pandas as pd

csv_cur = pd.read_csv(csv_cur_path,header=0) # 可以手动指定表头行

  1. 设置图表的尺寸和分辨率,figsize长宽大小,dpi像素分辨率

plt.figure(figsize=(16, 8), dpi=100)

  1. 设置表格的行总数,framedata通过iloc来索引每一个元素

row_len = len(csv_cur.iloc[:, 0])

  1. 设置表头,framedata通过columns来获得表头行

col_list = list(csv_cur.columns)

  1. 表格具体内容需要通过cellText来设置,每一个选项都是list[],表格从左上角开始定义(0,0,),包括表头,因此当设置colLabels时,表格内容设置需要避免覆盖第1行

表格的内容从第一行

for i in np.arange(row_len + 1):

for j in np.arange(col_len):

if i == 0:

the_table[i, j].get_text().set_fontsize(font_size)

the_table[i, j].get_text().set_color((0, 0, 0))

else:

the_table[i, j].get_text().set_fontsize(font_size)

the_table[i, j].get_text().set_color(table_colors[i – 1][j])

the_table = plt.table(cellText=table_vals,

cellLoc=’center’,

colWidths=col_widths,

colLabels=col_labels,

loc=’center’)

  1. 由于表格内容和字体需要手动定义,因此需要手动指定表的列宽

col_len = len(col_list)

col_width = 0.65 / col_len

col_widths = [col_width * 1.3]

for i in np.arange(col_len – 1):

if csv_diff.iloc[0, i + 1] == 0:

col_widths.append(col_width * 0.7)

else:

col_widths.append(col_width)

  1. 关掉图表的坐标轴并保存图片

plt.axis(‘off’)

result = “visualize_slam_result_table.png”

plt.savefig(result)

plt.show()

Original: https://blog.csdn.net/weixin_33953395/article/details/113674472
Author: 多环芳烃
Title: python绘制复杂表格_Matplotlib绘制表格

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/342131/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总