Hvordan bruke SYS.sti.vedlegg i Python

Hvordan bruke SYS.sti.vedlegg i Python

Sys.Sti er en liste over kataloger der Python -tolken søker etter moduler. Husk at dette er en liste! Når en modul hevdes i en prosjektfil, vil den søke gjennom hver av katalogene på listen. Hvis modulen er lokalisert i en av disse katalogene, går alt bra og prosjektet ditt blir gjengitt. Imidlertid, hvis modulen ikke er lokalisert i noen av de listede katalogene, vil prosjektet ditt mislykkes for at du ikke kan "legge til" katalogen der modulen din er plassert til listen ved hjelp av append () -funksjonen. I denne opplæringen lærer vi om hvordan du bruker SYS.sti.vedlegg () i Python.

Liste opp gjeldende bane

Ved å erklære følgende, kan vi sjekke gjeldende Python -banen:

Importer Sys
Fra Pprint Import Pprint
PPrint (Sys.sti)

Her brukes PPrint -modulen bare for å få ting til å se pene ut, slik at du kan ignorere den delen, og konsentrere deg om resten. Alt vi prøver å gjøre her er å skrive ut sys.sti.

Dette er hva vi får:

Det du legger merke til her er at det først og fremst er en liste. Så i henhold til listen vil den først se i den gjeldende arbeidskatalogen, deretter i andre kataloger en etter en. Den nåværende arbeidskatalogen er katalogen der hovedpytonskriptet - den som blir utført - blir funnet. Det dette også betyr er at denne listen kan endres eller redigeres.

Legge til en sti

Sys.sti.vedlegg () -metoden brukes spesielt for å legge til en bane til de eksisterende.

Anta at nå som jeg har to distinkte filer: Main.py, og fil1.py. Hoved.PY er hovedfilen, og vi skal prøve å importere File1.PY (en modul som vi skrev).

hoved-.py fil1.py
Importer fil1
Print (File1.hemmelig)
hemmelighet = “Dette er den hemmelige frasen”

Fordi fil1.PY eller vår modul er innenfor arbeidskatalogen, du skal kunne skrive ut den hemmelige setningen med hell. Dette er slik at når Python -tolken søker etter den forespurte modulen, vil den søke i arbeidskatalogen først, og fordi modulen vår kalt File1 er innenfor arbeidskatalogen, vil den automatisk skrive ut vår hemmelige setning.

Anta at jeg oppretter en katalog i arbeidskatalogen min kalt “Directory1” og plasserer modulen min som heter File1 i den.

Nå, innen modulen File1 er den hemmelige frasen som vi prøver å skrive ut. I dette tilfellet vil det ikke skrive ut den hemmelige frasen. Hvorfor? Fordi tolken ikke ser i “Directory1” for noen moduler. Med andre ord, den nåværende arbeidskatalogen er medlem av listen over SYS.bane, men "katalog1" er ikke medlem av den listen. Så den resulterende feilen er en modulenotfound -feil - den kunne ikke finne eller lokalisere modulen som heter File1.

For å avverge dette problemet, må du fortelle Python -tolken hvor du skal se etter modulfilen1. Det er her Sys.sti.vedlegg () -metoden kommer inn.

Sys.sti.vedlegg () -metoden brukes til å legge til banen som vi vil ha den eksisterende listen.

På et Linux -system:

sys.sti.Legg til (“/Path/To/Dir”)

På et Windows -system ville du skrevet:

sys.sti.vedlegg (“C: \\ sti \\ til \\ dir”)

Vær oppmerksom på at du ikke kan legge til noen gitt fil til SYS.bane, i stedet kan du legge til kataloger, og deretter importere filene du ønsker.

Eksempel 1

Så la oss prøve den forrige operasjonen (der File1 -modulen ligger i Directory1) igjen, men denne gangen legger vi stien til File1 -modulen til SYS.Sti ved hjelp av SYS.sti.vedlegg () Metode.

hoved-.py fil1.py
Importer Sys
sys.sti.vedlegg ('C: \\ brukere \\ Never \\ PycharmProjects \\
PythonProject1 \\ katalog1 ')
Importer fil1
Print (File1.hemmelig)
hemmelighet = “Dette er den hemmelige frasen”

Når vi legger til stien ved hjelp av SYS.sti.vedlegg () Metode, vi legger først plasseringen av modulen til banen, og importerer den deretter. Hvis det gjøres på en slik måte, skal Python -tolken kunne finne den forespurte modulen, og derfor hente den hemmelige variabelen.

Utgangen fra den forrige operasjonen er som følger:

Eksempel nr. 2

La oss ta et annet eksempel, denne gangen på en Linux -maskin. La oss anta at vi har en fil - Main.py.

hoved-.py
Importer Sys
Fra Pprint Import Pprint
PPrint (Sys.sti)

Her, Sys.Sti [0] er “/Home/Kalyani” fordi det er der Main.PY er lokalisert.

La oss nå endre skriptet litt ved å bruke SYS.sti.vedlegg () Metode. La oss bruke metoden for å legge til en bestemt bane ('/Home/Kalyani/Directory1') til SYS.sti.

hoved-.py
Importer Sys
Fra Pprint Import Pprint
sys.sti.vedlegg ('/Home/Kalyani/Directory1')
PPrint (Sys.sti)

Så, Sys.sti.APPLED () -metoden har lagt veien til slutten av den eksisterende listen! Her, vær oppmerksom på at anlegget gjøres på slutten av listen ikke i begynnelsen.

Pythonpath

Det er ett lite lite problem med det vi nettopp gjorde, og det er at vi ikke permanent satte det stedet på sysene.Stieliste. Sys.sti.vedlegg () -metoden brukes til å midlertidig legge til en bane, og som sådan vil den banen være gyldig for en økt for eksempel for eksempel. Hvis du vil endre sysene permanent.Stieliste, så kan vi bruke PythonPath for å legge banen til listen. Siden sys.Sti ser også inn i PythonPath, stedene som er oppført vil da bli inkludert i listen over stier.

På Linux:

Eksporter pythonpath = '/Path/to/dir'
  1. Åpne en terminal på Linux -maskinen din, og naviger til mappen som inneholder .Bashrc.
  2. Nano .Bashrc
  3. Legg til følgende på slutten av .Bashrc -fil: Eksporter pythonpath = '/Home/Kalyani/Directory1'

Her kan du legge til banen du vil ha.

  1. Lukk terminalen, og åpne en ny terminal
  2. Prøv nå å utføre programmet ditt. I mitt tilfelle vil det være følgende:
hoved-.py
Importer Sys
Fra Pprint Import Pprint
PPrint (Sys.sti)

Når vi skriver komplekse programmer i Python, vil vi til slutt legge til tredjepartsmoduler eller enda bedre, lage våre egne moduler. I alle tilfeller kan vi ikke oppbevare hver eneste Python -fil vi oppretter i en katalog, det kan være lurt å bruke flere kataloger for å klassifisere filene våre tilstrekkelig. Problemet er imidlertid at vi kan trenge å importere våre opprettede moduler til venstre og høyre. I slike tilfeller, hvis vi ønsker å forhindre en modulenotfunnet feil, kan vi legge til plasseringen av katalogen - og husk deg, det må være en katalog, ikke en fil - til SYS.Sti ved hjelp av SYS.sti.vedlegg () Metode.

Glad koding!