JSON-Datei für ein Package wird nicht installiert

Probleme bei der Installation?
Antworten
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Hey,

für ein eigenes Projekt habe ich ein Modul geschrieben, das eine JSON-Datei benutzt. Die Datei dient zum Speichern von Informationen, damit diese nicht für jeden Programmlauf aus dem Netz geladen werden müssen. Klappt auf dem eigenen Rechner auch wie gewünscht.

Nun habe ich eine setup.py geschrieben, die unter anderem folgendes enthält:

Code: Alles auswählen

setuptools.setup(
        (...)
        packages=['modulname'],
        package_data={'modulname': ['data/rates.json']},
        include_package_data=True,
    )
Ich führe anschließend python setup.py sdist aus. Im erzeugten Archiv ist die Datei dann auch im Unterverzeichnis data enthalten. Wenn ich aber das Archiv mit pip installiere und das Programm laufen lasse, dann findet der Programmteil zum Speichern der Daten die besagte Datei nicht mehr.

Eine Fehlermeldung beim Installieren wird nicht angezeigt. Jedoch ist auch nirgendwo eine rates.json zu finden (außer in meinem Projektverzeichnis natürlich). Was kann ich tun, damit die Datei beim Installieren beachtet wird?
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Meine Lösung war letztlich, dass ich den Pfad für die JSON-Daten selbst bestimme:

Code: Alles auswählen

from os import getenv
from pathlib import Path

def get_json_filename():
    envdir = getenv('APPDATA') or getenv('HOME')
    if envdir:
        path = Path(envdir) / '.curpy'
    else:
        path = Path(__file__).parent / 'data'
    return path / 'rates.json'
APPDATA hab ich für Windows-Nutzer mit reingenommen.
Antworten