fabiocaccamo / python-codicefiscale

:it: :credit_card: italian fiscal codes encoding, decoding and validation - codifica, decodifica e validazione del Codice Fiscale italiano.
MIT License
71 stars 24 forks source link

Allow access to data files when running in a frozen environment (eg. executable). #152

Closed fabiocaccamo closed 7 months ago

fabiocaccamo commented 7 months ago

Discussed in https://github.com/fabiocaccamo/python-codicefiscale/discussions/151

Originally posted by **goldelay** January 30, 2024 Ciao Fabio, per poter accedere alle informazioni data/municipalities.json etc... su una build eseguibile effettuata con pyinstaller ho dovuto modificare il codice di data.py applicando questa fix: ```python from __future__ import annotations from datetime import datetime from typing import Any import fsutil import sys, os def get_temp_dir(): if getattr(sys, 'frozen', False): # Se l'applicazione è un eseguibile standalone return os.path.dirname(sys.executable) else: # Se l'applicazione è eseguita come script Python return os.path.dirname(os.path.abspath(__file__)) def get_data(filename: str) -> Any: return fsutil.read_file_json(fsutil.join_path(get_temp_dir(), f"data/{filename}")) #return fsutil.read_file_json(fsutil.join_path(__file__, f"data/{filename}")) ``` la function get_temp_dir() serve ovviamente a dirottare le chiamate per caricare i file dalla cartella del componente di python alla root dell'esegiubile nel momento in cui è un eseguibile. In questo modo copiando la cartella .\data\*.json contenuta dentro al tuo componente dentro la root dell'applicazione EXE permette di funzionare riuscendo così ad elaborare i dati per generare e verificare il codice fiscale al di fuori quindi del contesto python/componente. Spero di esser stato d'aiuto Saluti Umberto Neri

Upvote & Fund

Fund with Polar

fabiocaccamo commented 7 months ago

@goldelay fixed in 0.9.1 version.