Wat is het PTH-bestandsformaat?
Een .pth-bestand is een tekstbestand voor padconfiguratie dat wordt verwerkt door de ingebouwde site-module van Python bij het opstarten van de interpreter. Elke regel in het bestand is ofwel een mappad dat aan sys.path moet worden toegevoegd, of een import-instructie die als Python-code moet worden uitgevoerd. Lege regels en regels die beginnen met # worden behandeld als commentaar en genegeerd.
.pth-bestanden moeten in een map worden geplaatst die door de site-module wordt gescand - meestal site-packages of dist-packages - zodat Python ze automatisch vindt wanneer de interpreter start. Pakketbeheerders zoals pip en conda gebruiken .pth-bestanden om geïnstalleerde pakketten in het Python-pad te registreren zonder de installatie van de interpreter zelf te wijzigen.
Het formaat is stabiel sinds Python 1.5.2 (1999) en bevat geen versie-informatie. Bestanden zijn platte UTF-8 (of ASCII) tekst, meestal slechts een paar regels en kleiner dan 1 KB.
Een belangrijke veiligheidsopmerking: omdat regels die beginnen met import bij elke opstart als Python-code worden uitgevoerd, kan een kwaadaardig .pth-bestand in site-packages persistente code-uitvoering bewerkstelligen - een bekende injectievector op gecompromitteerde systemen.
Merk op dat .pth ook de extensie is die door PyTorch wordt gebruikt voor geserialiseerde model-checkpoints - een binair formaat dat totaal niets te maken heeft met de padconfiguratie van Python. De locatie en inhoud van het bestand zijn de betrouwbare manier om tussen de twee toepassingen te onderscheiden.
Beveiliging & veiligheid
RISICO: MEDIUMEen Python .pth-bestand is platte tekst en kan niet zelfstandig worden uitgevoerd. Regels die beginnen met „import” worden echter elke keer dat Python start als Python-code uitgevoerd. Een kwaadaardig .pth-bestand dat in site-packages is geplaatst, is een bekende techniek voor persistentie/code-injectie op gecompromitteerde systemen. Als u een onverwacht .pth-bestand in uw Python site-packages vindt, inspecteer dan de inhoud voordat u het vertrouwt. Op een gezond systeem moeten alle .pth-bestanden overeenkomen met legitiem geïnstalleerde pakketten.
Formaatdetails
in een notendop- PyTorch Model Checkpoint - PyTorch slaat model state dicts conventioneel op als .pth-bestanden (binair Pickle/ZIP-formaat); dit botst met de eigen .pth-padbestanden van Python en .pt heeft nu de voorkeur.
- VisualGPSXP Path File - VisualGPSXP (verouderd GPS-hulpprogramma voor Windows) sloeg GPS-trackpaden op als .pth; de software is verouderd en dit gebruik is uiterst zeldzaam.
Programma's die PTH-bestanden openen
Technische details
diepe specificaties| Codering | Platte tekst, UTF-8 of ASCII |
| Container | Platte tekst (geen wrapper of binaire structuur) |
| Regelsyntaxis | Eén item per regel: een mappad, een „import <module>”-instructie, een lege regel, of een „#”-commentaar |
| Verwerkings-trigger | De „site”-module van Python leest alle .pth-bestanden in site-packages / dist-packages bij elke start van de interpreter |
| Effect op sys.path | Elke geldige regel met een map wordt toegevoegd aan sys.path, waardoor de pakketten daarin importeerbaar worden zonder expliciete padmanipulatie |
| Uitvoering van import-regels | Regels die beginnen met „import” worden bij het opstarten als Python-code uitgevoerd - een risico voor persistentie/injectie op gecompromitteerde systemen |
| Typische bestandsgrootte | Minder dan 1 KB (meestal 1-10 regels) |
| Bestandssignatuur | Geen - platte tekst zonder magic bytes of binaire header |
| MIME-type | text/plain |
| Vereiste bestandslocatie | Moet zich bevinden in een map die door de site-module wordt gescand: site-packages, dist-packages of de Python-installatiemap |
| Stabiliteit van formaat | Ongewijzigd sinds Python 1.5.2 (april 1999); geen versieveld; volledig achterwaarts compatibel |
| Bijbehorend OS | Windows, macOS, Linux - overal waar Python draait |
| Naamconflict | .pth wordt ook gebruikt door PyTorch voor binaire model-checkpointbestanden - een volledig ander formaat dat wordt onderscheiden door bestandsinhoud en locatie |
| Uitgebracht | Python 1.5.2 (1999) - site module formalised .pth processing |
| Laatste versie | No versioning - format unchanged; behaviour documented in Python 3 'site' module |
| Open standaard | Ja · royaltyvrij |
| Specificatie | docs.python.org |
PTH conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over PTH-bestanden.