Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to install python application with tkcalendar module by pyinstaller?

I'm trying to install python application on Windows with pyinstaller where I'm using tkcalendar. Application is working but the tkcalendar.Calendar isn't.

When I'm running application without installation everything works but if I do this, Calendar widget does not appear. I think that pyinstaller sees this module but he has problems with modules that tkcalendar is using. I tried to run pyinstaller with --path=/.../python/Lib/site-packages but this didnt worked. Also copying module files to application directory didn't help.

like image 765
Bodzio322 Avatar asked Sep 05 '19 19:09

Bodzio322


3 Answers

The issue does not come from tkcalendar but from the fact that PyInstaller does not detect second level imports. A way to solve this issue is explained in tkcalendar's documentation in the HowTos section:

When bundling an application with PyInstaller, there is an issue with the detection of the babel dependency of tkcalendar. This can be fixed by using the --hidden-import option:

$ pyinstaller --hidden-import babel.numbers myscript.py

or by editing the .spec file:

hiddenimports=["babel.numbers"]
like image 69
j_4321 Avatar answered Nov 15 '22 22:11

j_4321


Add following code to your python script, while bundling with pyinstaller

import babel.numbers
like image 29
Ajinkya Sonwane Avatar answered Nov 15 '22 23:11

Ajinkya Sonwane


If anyone found the same problem. In tkcalendar 1.5.0 there is problem with import in calendar.py.

Locate the tkcalendar folder (probably /.../python/Lib/site-packages/tkcalendar) and under calendar.py add an additional import for the missing module:

import calendar
from babel.dates import format_date, parse_date, get_day_names, get_month_names
from babel.numbers import *  # Additional Import```
like image 22
Bodzio322 Avatar answered Nov 15 '22 22:11

Bodzio322