python-codicefiscale icon indicating copy to clipboard operation
python-codicefiscale copied to clipboard

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

Open fabiocaccamo opened this issue 1 year ago • 0 comments

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:

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

  • We're using Polar.sh so you can upvote and help fund this issue.
  • We receive the funding once the issue is completed & confirmed by you.
  • Thank you in advance for helping prioritize & fund our backlog.
Fund with Polar

fabiocaccamo avatar Jan 30 '24 15:01 fabiocaccamo