logo

Python — importējiet moduli no cita direktorija

Strādājot pie lieliem projektiem, mēs varam saskarties ar situāciju, kad vēlamies importēt a modulis no cita direktorija. Bet kāda iemesla dēļ modulis var netikt pareizi importēts. Tagad neuztraucieties, ja modulis nav pareizi importēts. Šajā rakstā mēs apspriedīsim veidus, kā importēt moduli no cita direktorija.

Piezīme: Modulis ir tikai Python programma, kas beidzas ar .py paplašinājumu, un mape, kurā ir modulis, kļūst par pakotni.



Direktorija struktūra:

 - Folder_1 - main.py - Folder_2 - module1.py>

Pieņemsim, ka, lai importētu, kā importēt failu Python, mums ir divas dažādas mapes, no kurām viena satur main.py, kas ir mūsu galvenais Python fails, kurā mēs vēlamies importēt moduli 1 no mapes_2.

1. modulis: satur divas funkcijas, ko sauc par add un odd_even. Funkcija pievienot izmantos divus argumentus un atgriezīs to pievienošanu. Funkcija odd_even aizņems tikai vienu arguments un drukājiet Pat ja skaitlis ir pāra vai izdrukājiet Nepāra, ja skaitlis ir nepāra.



modulis1.py

Python3






# 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'>)>

>

>

Ja mēs vienkārši mēģinām importēt modulis 1 no Mape_2, mēs saskarsimies ar šādu kļūdu.

galvenais.py

Python3




# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)>

>

>

Izvade:

Kļūda

ModuleNotFoundError , jo pēc noklusējuma Python tulks pārbaudīs failu tikai pašreizējā direktorijā, un mums ir manuāli jāiestata faila ceļš, lai importētu moduļus no cita direktorija. Mēs to varam izdarīt, izmantojot dažādus veidus. Šie veidi ir sīkāk aplūkoti turpmāk.

1. metode: importējiet moduli no cita direktorija, izmantojot sys moduli

Varam izmantot sys.path lai sistēmas ceļam pievienotu jaunās dažādās mapes ceļu (mape, no kuras mēs vēlamies importēt moduļus), lai Python varētu arī meklēt moduli šajā direktorijā, ja tas neatrod moduli savā pašreizējā direktorijā. Kā sys.path ietilpst zem saraksta tipa klase tāpēc mēs varam viegli izmantot ievietošanas metodi, lai pievienotu mapes ceļu.

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>))>

>

>

Izvade :

Izmantojot sys

2. metode: PYTHONPATH izmantošana vides mainīgais

Tāpat, ja nevēlaties izmantot sys moduli, lai iestatītu jaunā direktorija ceļu. Mainīgajam PYTHONPATH varat piešķirt direktorijas ceļu un programma joprojām darbojas.

In Linux , mēs varam izmantot šādu komandu terminālī, lai iestatītu ceļu:

eksportēt PYTHONPATH='ceļš/uz/direktoriju'

Windows sistēmā:

SET PYTHONPATH=ceļš/uz/direktoriju

Lai redzētu, vai mainīgajam PYTHONPATH ir jaunās mapes ceļš, mēs varam izmantot šādu komandu:

atbalss $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>))>

>

>

Izvade:

Izmantojot PYTHONPATH

Pieņemsim, ka mums ir šāda direktoriju struktūra:

- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>

Tagad vēlaties importēt jauns.py modulis no Mape_2 uz mūsu projekta mapi_1 galvenais.py failu.

Sintakse:

no project.folder.subfolder.filename importēšanas funkcijas nosaukums

java noklusējuma parametri

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()>

>

>

Izvade:

Izvade