tkinter打包执行异常

一、背景

tkinter界面中通常会用到日历控件,常用的是tkcalendar,这个包在编译器中使用时一般没什么问题,但是在打包时会出现问题,无论是Pyinstaller还是Nuitka,网上能查到的都是Pyinstaller解决方案,这里写一下Nuitka的解决方案。

二、tkcalendar问题1——Calendar与python自带的calendar冲突

使用这个包通常会有这样一句:

from tkcalendar import Calendar

你会发现这个包编译测试没问题,但打包是就会报错,是因为Calendar这个类(在tkcalendar\calendar_.py下面)会跟python自带的calendar包冲突。
因此要想用,最好对这个类改名,我这里改成CCalendar。

注意有几处相关联的地方需要修改,如果不知道,可以直接编译程序,它会逐个报错说no module named ‘Calendar’,因为他们调用的Calendar类已经被修改为CCalendar类,没有Calendar类了。

(1)在你调用的程序里面修改:

 

(2)去tkcalendar\calendar_.py里面修改:

(3)去tkcalendar\dateentry.py里面修改:

 (4)去tkcalendar_init_.py里面修改:

 

 

三、tkcalendar问题2——babel包相关问题

运行仍旧报错,这次说是no module named ‘babel.numbers’,但是babel下面是有numbers.py,试了各种方法,最后直接在起初调用tkcalendar的地方加上一句

 

 再打包,就能正常运行了。

posted @ 2024-05-16 18:11  Lccccccccc  阅读(72)  评论(0编辑  收藏  举报