Šiame straipsnyje sužinosime, kaip importuoti modulį iš pirminio katalogo. Iš Python 3.3 neleidžiama daryti nuorodų į pagrindinį katalogą arba jį importuoti. Iš toliau pateikto pavyzdžio galite tai aiškiai suprasti.
Pirminiame kataloge turime pakatalogį, failą geeks.py, o pakatalogyje turime python failą pavadinimu temp.py. Dabar pabandykime, ar galime importuoti geeks modulį pirminiame kataloge iš temp.py failo. pakatalogį.
geeks.py (modulis pirminiame kataloge)
Python3
bendras apsaugos gedimas
def> geek_method():> >print>(>'This method in geeks module.......bye'>)> |
>
>
temp.py (python failas pakatalogyje)
Python3
# importing the module in> # parent directory> from> parentdirectory>import> geeks> # calling the func1() method> # from geeks module> geeks.geek_method()> |
java mvc
>
>
Kaip jau aptarėme anksčiau, modulio importuoti iš pirminio katalogo neįmanoma, todėl atsiranda panaši klaida.
Traceback (paskutinis skambutis):
Failas C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py, 2 eilutė, in
iš tėvų katalogo importo geeks
ModuleNotFoundError: nėra modulio pavadinimu „parentdirectory“
Dabar sužinokime, kaip importuoti modulį iš pirminis katalogas:
Norint importuoti modulį, katalogas, turintis tą modulį, turi būti PYTHONPATH. Tai aplinkos kintamasis, kuriame yra paketų, kuriuos įkels Python, sąrašas. Paketų, pateiktų PYTHONPATH, sąrašas taip pat yra sys.path, todėl pirminio katalogo kelias bus įtrauktas į sys.path.
Savo darbe naudojame tris skirtingus metodus, kurie paaiškinami toliau pateikiant pavyzdžius.
1 būdas: importuokite iš pirminio katalogo naudodami sys.path metodą
Čia mes naudosime sys modulį ir nustatysime kelią tiesiai į reikiamą modulį.
Pridėkite pagrindinį katalogą prie sys.path naudojant pridėti () metodas . Tai yra integruota sys modulio funkcija, kurią galima naudoti su kelio kintamuoju, kad būtų įtrauktas konkretus vertėjų paieškos kelias. Toliau pateiktame pavyzdyje parodyta, kaip tai galima padaryti.
Python3
avinas aktorius
import> sys> # setting path> sys.path.append(>'../parentdirectory'>)> # importing> from> parentdirectory.geeks>import> geek_method> # using> geek_method()> |
>
>
Išvestis:
This method in geeks module.......bye>
2 būdas: importuokite iš pirminio katalogo naudodami os.path.abspath() metodas
Čia mes naudosime sys modulį, taip pat kelio modulį katalogui gauti ir nustatysime kelią tiesiai į reikiamą modulį.
Sintaksė: os.path.abspath(kelias)
Parametras:
Kelias: Į kelią panašus objektas, vaizduojantis failų sistemos kelią.Grąžinimo tipas: Šis metodas grąžina normalizuotą kelio pavadinimo kelio versiją.
Pirmiausia gausime katalogo, kuriame temp.py failas šiuo metu naudoja kelią.path(__file__), pavadinimą. abspath (), antra, pridėkite katalogą prie sys.path .pridėti patikrinti, naudosime jo metodą.
Python3
concat eilutės java
import> path> import> sys> # directory reach> directory>=> path.path(__file__).abspath()> # setting path> sys.path.append(directory.parent.parent)> # importing> from> parentdirectory.geeks>import> geek_method> # using> geek_method()> |
>
>
Išvestis:
This method in geeks module.......bye>
3 būdas: importuokite iš pirminio katalogo naudodami os.path.dirname metodas
Čia mes naudosime sys modulį, taip pat OS modulį, kad gautume katalogą (dabartinį ir pirminį) ir nustatysime kelią tiesiai į reikiamą modulį.
java sveikasis skaičius
Sintaksė: os.path.dirname(kelias)
Parametras:
kelias : į kelią panašus objektas, nurodantis failų sistemos kelią.Grąžinimo tipas: Šis metodas grąžina eilutės reikšmę, kuri nurodo katalogo pavadinimą iš nurodyto kelio.
Pirma, mes gausime dabartinį katalogą naudodami os.path.dirname (os.path.realpath(__file__)), antra, gausime pirminį katalogą naudodami os.path.dirname(), galiausiai, pridėkite pirminį katalogą katalogą į sys.path norėdami patikrinti, naudosime jo metodą.
Python3
import> sys> import> os> # getting the name of the directory> # where the this file is present.> current>=> os.path.dirname(os.path.realpath(__file__))> # Getting the parent directory name> # where the current directory is present.> parent>=> os.path.dirname(current)> # adding the parent directory to> # the sys.path.> sys.path.append(parent)> # now we can import the module in the parent> # directory.> import> geeks> geeks.geek_method()> |
>
>
Išvestis:
