Python göreli içe aktarma

Bir Python projesinin içinde nispeten paketleri içe aktarabilirsiniz. Bir paketi g√∂receli olarak içe aktarƒ±rken bir hata yaparsanƒ±z, g√∂reli içe aktarmada ust seviyenin √∂tesinde paket hatasƒ± hatasƒ±yla kar≈üƒ±la≈üƒ±rsƒ±nƒ±z.

Bu kƒ±lavuzda, Bu hatanƒ±n ne anlama geldiƒüini ve neden ortaya 烱ktƒ±ƒüƒ±nƒ± tartƒ±≈üacaƒüƒ±z. Projenizde bir g√∂reli içe aktarma ifadesini nasƒ±l ba≈üarƒ±lƒ± bir ≈üekilde yazacaƒüƒ±nƒ±zƒ± √∂ƒürenmenize yardƒ±mcƒ± olmak için bu hatanƒ±n bir √∂rneƒüini inceleyeceƒüiz.

g√∂reli içe aktarmada ust duzey paket hatasƒ±nƒ±n √∂tesinde

Bir g√∂reli içe aktarma, konumunu belirlemek için bir modulun adƒ±nƒ± kullanƒ±r.

A≈üaƒüƒ±daki g√∂reli içe aktarmayƒ± g√∂z √∂nunde bulundurun:

Bu, "app‚" Bu import ifadesini içeren programƒ±n yazƒ±ldƒ±ƒüƒ± klas√∂run ustundeki dizinden Python modulu.

Diyelim ki bu dosyanƒ±n adƒ± "program.py‚" ve "app‚" adlƒ± bir klas√∂rde bulunuyordu. Ana projemizin adƒ± "kek‚". Dosya yapƒ±mƒ±z ≈ü√∂yle g√∂runur:

"program.py‚" dosyasƒ±nda, Python içe aktarma ifademizi ≈üu ≈üekilde g√∂rur:

"programdan‚" mevcut çalƒ±≈üma dizinimizden (g√∂runtulediƒüimiz klas√∂r) deƒüil, bir klas√∂r.

Katƒ±lƒ±mcƒ±larƒ±n %81’i, bir eƒüitim kampƒ±na katƒ±ldƒ±ktan sonra teknik i≈ü beklentileri konusunda kendilerini daha guvende hissettiklerini belirtti. Bugun bir eƒüitim kampƒ± ile e≈üle≈üin.

Ortalama bir eƒüitim kampƒ± mezunu, bir eƒüitim kampƒ±na ba≈ülamaktan ilk i≈üini bulmaya kadar, kariyer geçi≈üinde altƒ± aydan az zaman harcadƒ±.

Bunun nedeni "program&rdquo ; g√∂runtulediƒüimiz dizinin arkasƒ±ndaki iki dizindir. __init__.py dosyalarƒ± Python’a kendi Python paketlerimizle çalƒ±≈ütƒ±ƒüƒ±mƒ±zƒ± s√∂yler. Bu dosya her iki durumda da bo≈ütur.

Programlarınız bu yapıyı kullanmalıdır, aksi halde bir hatayla karşılaşırsınız.

Örnek Senaryo

"kek‚" hangi "Pasta severim!‚" ifadesinin 烱ktƒ±sƒ±nƒ± alƒ±r. konsola. Bu proje daha karma≈üƒ±k hale gelecek, bu yuzden kodumuzu b√∂lmek için moduller kullanƒ±yoruz.

Projemizin dosya yapısı şuna benzer:

Bu kodun tamamƒ± "cake&rdquo adlƒ± bir klas√∂rdedir ;. app.py dosyamƒ±zƒ±n içinde program.py dosyamƒ±zƒ± içe aktaran bir ifademiz var:

Bu standart bir import ifadesidir. app/program.py dosyasƒ±nƒ±n içinde g√∂reli bir import ifademiz var:

Bu kod, app/ uzerindeki dizinden "printer‚" dosyasƒ±nƒ± içe aktarƒ±r. app/ uzerindeki dizin, sizin için ana dizindir. r projesi.

Printer.py dosyamƒ±z bir yazdƒ±rma ifadesi içerir:

Let‚Äô √áalƒ±≈üƒ±p çalƒ±≈ümadƒ±ƒüƒ±nƒ± g√∂rmek için programƒ±mƒ±zƒ± çalƒ±≈ütƒ±rmayƒ± deneyin. Projemizin ana dosyasƒ± olduƒüu için app.py dosyamƒ±zƒ± çalƒ±≈ütƒ±racaƒüƒ±z:

Bu dosyayƒ± çalƒ±≈ütƒ±rdƒ±ƒüƒ±mƒ±zda ≈üu mesajƒ± g√∂ruyoruz:

Program.py dosyamƒ±z "yazƒ±cƒ±mƒ±zƒ±‚" modulu.

Çözum

"yazƒ±cƒ±‚" "app.program‚" dosya. Bu bir sorun çunku "yazƒ±cƒ±‚" kendisi bir pakette deƒüil. G√∂receli içe aktarmalar yalnƒ±zca paketler içinde çalƒ±≈üƒ±r.

Bu sorunu ç√∂zmek için projemizin dizin yapƒ±sƒ±nƒ± deƒüi≈ütirmemiz gerekiyor. "yazƒ±cƒ±mƒ±zƒ±‚" dosya ve "uygulamamƒ±z‚" "yazƒ±cƒ±‚" bir paket içindedir. Bu, "yazƒ±cƒ±mƒ±za‚" "app‚" klas√∂r.

app.py dosyamƒ±zƒ± alt dizinlerimize ba≈üvuracaƒüƒ± için mevcut dizininde tutabiliriz.

Tum dosyalarƒ±mƒ±zƒ± ta≈üƒ±yalƒ±m, app.py hariç, yeni bir klas√∂re:

app.py dƒ±≈üƒ±ndaki tum proje dosyalarƒ±mƒ±z "cake&rdquo adlƒ± yeni bir klas√∂rdedir. ;. app.py dosyamƒ±zƒ± "cake‚" modul:

Bu, "programƒ±‚" cake/app dizininde bulunan dosya.

Artƒ±k printer.py dosyamƒ±z kendi paketinde olduƒüuna g√∂re projemizi ba≈üarƒ±yla çalƒ±≈ütƒ±rabiliriz. bir paketin içindeler.

"Python.Engineering hayatƒ±ma en çok ihtiyacƒ±m olduƒüu anda girdi ve hƒ±zlƒ± bir ≈üekilde bir bootcamp ile e≈üle≈ümeme yardƒ±mcƒ± oldu. Mezun olduktan iki ay sonra, hayattaki deƒüerlerim ve hedeflerime uygun hayalimdeki i≈üi buldum!"

Venus, Rockbot’ta Yazƒ±lƒ±m Muhendisi

< p>Kodumuzu çalƒ±≈ütƒ±ralƒ±m ve ne olduƒüunu g√∂relim:

Programƒ±mƒ±z konsola "I like cake!‚" mesajƒ±nƒ± ba≈üarƒ±yla yazdƒ±rƒ±r.Bu mesaj daha √∂nce bahsettiƒüimiz gibi printer.py’de tanƒ±mlanmƒ±≈ütƒ±r.

< p>Bu bize program.py dosyamƒ±zƒ±n printer.py dosyasƒ±nƒ± ba≈üarƒ±yla içe aktarabildiƒüini g√∂sterir. Dosyayƒ± içe aktardƒ±ƒüƒ±mƒ±zda içeriƒüi yurutuldu.

Sonuç

g√∂reli içe aktarmada ust duzey paket hatasƒ±nƒ±n √∂tesinde hatasƒ±, içe aktardƒ±ƒüƒ±nƒ±z dosya bir paketin parçasƒ± olmadan g√∂reli bir içe aktarma kullandƒ±ƒüƒ±nƒ±zda olu≈üur. Bu hatayƒ± duzeltmek için, nispeten içe aktardƒ±ƒüƒ±nƒ±z dizinlerin kendi paketleri.

Artƒ±k ihtiyaç duyduƒüunuz kaynaklara sahipsiniz. Bu yaygƒ±n Python hatasƒ±nƒ± bir profesyonel gibi ya≈üayƒ±n!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method