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?
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é:
Hav et modul version i pakken, der wrapper denne funktionalitet, så man i resten af pakken kan tilgå pakke-oplysninger uden kendskab til implementeringen.
Tilsvarende, hav et modul resources (eller lignende navn), der indeholder en snitflade til nemt at kunne tilgå og åbne datafiler (eksempelvis konfigurationsfiler).
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?
importlib.resources
Eksempel:
hvor
some-text.txt
ligger i roden af pakken, altså ipackage/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
?importlib.metadata
Bemærk, at man med
metadata
-funktionerne i tilsyneladende alle tilfælde skal bruge tekstreng-repræsentationen af pakkens navn, herpackage
, som fås ved at skrivepackage.__name__
.Idé:
version
i pakken, der wrapper denne funktionalitet, så man i resten af pakken kan tilgå pakke-oplysninger uden kendskab til implementeringen.resources
(eller lignende navn), der indeholder en snitflade til nemt at kunne tilgå og åbne datafiler (eksempelvis konfigurationsfiler).