Dirbdami su dideliais projektais galime susidurti su situacija, kai norime importuoti a modulis iš kito katalogo. Tačiau dėl tam tikrų priežasčių modulis gali būti netinkamai importuotas. Dabar nesijaudinkite, jei jūsų modulis importuotas netinkamai. Šiame straipsnyje aptarsime būdus, kaip importuoti modulį iš kito katalogo.
Pastaba: Modulis yra tik Python programa, kuri baigiasi .py plėtinį, o aplankas, kuriame yra modulis, tampa paketu.
Katalogo struktūra:
- Folder_1 - main.py - Folder_2 - module1.py>
Tarkime, norėdami importuoti, kaip importuoti failą į Python, turime du skirtingus aplankus, viename yra main.py, kuris yra pagrindinis Python failas, į kurį norime importuoti modulį1 iš aplanko_2.
1 modulis: yra dvi funkcijos, vadinamos add ir odd_even. Funkcija pridėti paims du argumentus ir grąžins jų pridėjimą. Funkcija odd_even užtruks tik vieną argumentas ir spausdinkite Net jei skaičius lyginis arba spausdinkite Nelyginis, jei skaičius nelyginis.
modulis1.py
Python3
Pete'o Davidsono pilietybė
# creating a simple add function> def> add(a, b):> >return> a>+>b> # creating a simple odd_even function> # to check if the number is odd or even> def> odd_even(n):> >if> n>%> 2> =>=> 0>:> >print>(>'Even'>)> >else>:> >print>(>'Odd'>)> |
>
>
Jei tiesiog bandysime importuoti modulis 1 iš Aplankas_2, susidursime su tokia klaida.
pagrindinis.py
Python3
žemėlapiai java
# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)> |
>
>
Išvestis:

Klaida
ModuleNotFoundError , nes pagal numatytuosius nustatymus „Python“ interpretatorius tikrins, ar failas yra tik dabartiniame kataloge, o failo kelią turime nustatyti rankiniu būdu, kad galėtume importuoti modulius iš kito katalogo. Tai galime padaryti įvairiais būdais. Šie būdai išsamiai aptariami toliau.
1 būdas: importuokite modulį iš kito katalogo naudodami sys modulį
Galime naudoti sys.path pridėti naujo skirtingo aplanko (aplanko, iš kurio norime importuoti modulius) kelią prie sistemos kelio, kad Python taip pat galėtų ieškoti modulio tame kataloge, jei modulio nerastų dabartiniame kataloge. Kaip sys.path patenka po sąrašo tipo klasė Taigi, norėdami pridėti aplanko kelią, galime lengvai naudoti įterpimo metodą.
Python3
# importing sys> from> module1>import> odd_even, add> import> sys> # adding Folder_2 to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/Folder_2'>)> # importing the add and odd_even> # function> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))> |
>
>
Išvestis :
koks mano monitoriaus ekrano dydis

Naudojant sys
2 būdas: PYTHONPATH naudojimas aplinkos kintamasis
Panašiai, jei nenorite naudoti sys modulį, kad nustatytumėte naujo katalogo kelią. PYTHONPATH kintamajam galite priskirti katalogo kelią ir programa vis tiek veiks.
Į Linux , galime naudoti šią komandą terminale norėdami nustatyti kelią:
eksportuoti PYTHONPATH='kelias/į/katalogas'
„Windows“ sistemoje:
NUSTATYTI PYTHONPATH=kelias/į/katalogas
Norėdami pamatyti, ar PYTHONPATH kintamasis turi naujo aplanko kelią, galime naudoti šią komandą:
aidas $PYTHONPATH
Python3
# importing the add and odd_even function> from> module1>import> odd_even, add> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))> |
c atsitiktinis skaičius
>
>
Išvestis:

Naudojant PYTHONPATH
abėcėlė su skaičiais
Tarkime, kad turime tokią katalogo struktūrą:
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>
Dabar norite importuoti naujas.py modulis iš Aplankas_2 į mūsų projekto aplanką_1 pagrindinis.py failą.
Sintaksė:
iš project.folder.subfolder.filename importavimo funkcijos pavadinimas
Python3
# importing sys> import> sys> # adding Folder_2/subfolder to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/project/Folder_2/subfolder'>)> # importing the hello> from> new>import> hello> # calling hello function> hello()> |
>
>
Išvestis:

Išvestis