SDFIdk / SDFIPython

Anbefalinger til brug af Python i SDFI
https://sdfidk.github.io/SDFIPython/
Creative Commons Zero v1.0 Universal
0 stars 3 forks source link

Tilføj beskrivelse af og eksempler på brug af importlib.resources og importlib.metadata #10

Open xidus opened 2 years ago

xidus commented 2 years ago

Idag bliver pakkedata inkluderet med resten af Python-pakken dér, hvor den bliver installeret hos brugeren. Det har været normalt, at man finder stien til disse filer ved at finde den absolutte sti til installationens rod og så derfra åbne filerne efter behov. Det er dog med importlib-værktøjerne ikke nødvendigt, og det er derfor anbefalingen fra PSF, at man bruger disse i stedet.

Hvordan tilgår man pakkedata/ikke-python-filer, som kommer med i pakken?

Eksempel:

from importlib import resources

import package

print(resources.files(package).joinpath('some-text.txt').read_text())

hvor some-text.txt ligger i roden af pakken, altså i package/src/package/some-text.txt.


Python-pakkens version kan styres og tilgås på mange måder.

Hvordan tilgår man pakkens version, når man, med SetupTools, har den stående i setup.cfg?

from importlib import metadata

import package

print(metadata.metadata(package.__name__))
print(metadata.version(package.__name__))

Bemærk, at man med metadata-funktionerne i tilsyneladende alle tilfælde skal bruge tekstreng-repræsentationen af pakkens navn, her package, som fås ved at skrive package.__name__ .

Idé: