Skip to content

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

@fabiocaccamo

Description

@fabiocaccamo

Discussed in #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

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions