Logo
Ana Sayfa
ÖZEL KODLAMA DERSLERİ
Yazılım Özel Ders
Tüm birebir programlara genel bakış
Python Yazılım Kursu
Sıfırdan ileri seviyeye birebir Python
Java Yazılım Kursu
OOP odaklı birebir Java eğitimi
AP Computer Science Principles
AP CSP sınav hazırlığı
GRUP DERSLERİ
Python & Django Masterclass
SINIRLI KONTENJAN
Java & Spring Boot Masterclass
SINIRLI KONTENJAN
C# .NET Masterclass
SINIRLI KONTENJAN
VİDEO DERSLER
Sıfırdan Temel Python Kursu
Kendi Hızında Öğren
ÜCRETSİZ
Seviye Testi
Ücretsiz — Python, Java, algoritma seviye testleri
Kariyerini Keşfet
Sertifika Doğrula
Belge numarası ve soyad ile doğrulama

Python'da ModuleNotFoundError Hatası: Nedenleri ve Adım Adım Çözümü

Yazar: Berk Keskin 28.08.2026 ~10 dk okuma 1 Okunma
python-modulenotfounderror-hatasi-cozumu

Ekranda kırmızı harflerle beliren ModuleNotFoundError mesajını görüp içiniz mi cız etti? Sakin olun: bu hata kodunuzun bozuk olduğu anlamına gelmez, Python'un aradığı bir modülü bulunduğu yerde bulamadığını söyler. Çoğu zaman neden basittir — modül hiç kurulmamıştır, yanlış sanal ortamdasınızdır ya da dosya yanlış klasörden çalıştırılmıştır. Bu yazıda hatanın ne anlattığını, en sık üç nedenini ve adım adım nasıl çözüleceğini göreceksiniz.

ModuleNotFoundError Ne Anlatır? Hata Mesajını Doğru Okumak

Python bir hata verdiğinde önce panikleyip ekranı kapatmak yerine, o kırmızı metni satır satır okumak işin en kısa yoludur. Traceback (hata izi) aslında size yardım etmek için vardır: en altta hatanın türünü ve mesajını, üstteki satırlarda ise hangi dosyanın hangi satırında bu hataya yol açıldığını gösterir. ModuleNotFoundError: No module named 'requests' gibi bir satır gördüğünüzde, Python size açıkça "requests adında bir modül aradım ama bulamadım" demektedir.

Burada kritik nokta şu: bu hata bir mantık hatası veya yazım yanlışı değil, çoğunlukla bir ortam ya da konfigürasyon işaretidir. Kodunuzun mantığı doğru olabilir, fonksiyonlarınız kusursuz çalışabilir; sorun sadece Python yorumlayıcısının o an aradığı modülü nerede bulacağını bilmemesidir. Bu ayrımı yapmak, çözüme giden yolu kısaltır çünkü artık kodu değil, ortamı sorgulamaya başlarsınız.

Şunu bilmenizde fayda var: bu hatayla karşılaşmak yeni başlayanlara özgü bir beceriksizlik göstergesi değildir. Deneyimli yazılımcılar da proje değiştirdiklerinde, yeni bir bilgisayara geçtiklerinde ya da uzun süre dokunmadıkları bir projeyi tekrar açtıklarında aynı mesajla karşılaşır. Önemli olan mesajı okuyup hangi modülün eksik olduğunu tespit etmek, sonra da nedenini sistematik biçimde aramaktır. İlerleyen bölümlerde bu nedenleri tek tek ele alacağız.

Neden 1: Sanal Ortam (venv) Karışıklığı

Neden 1: Sanal Ortam (venv) Karışıklığı

Sanal ortamlar (venv), her proje için bağımsız bir paket kütüphanesi oluşturmanızı sağlar; böylece bir projede kullandığınız paket sürümü diğerini etkilemez. Ancak bu bağımsızlık, aynı zamanda en sık karşılaşılan ModuleNotFoundError nedenlerinden birini de beraberinde getirir: paketi bir sanal ortamda kurup başka bir sanal ortamda (ya da hiç aktive etmeden sistem Python'unda) çalıştırmak. Paket gerçekten kurulu olsa bile, terminal o an farklı bir ortama bakıyorsa Python onu göremez.

  • Birden fazla proje üzerinde çalışan öğrenciler, hangi projenin hangi venv'e ait olduğunu karıştırabilir.
  • Terminali kapatıp yeniden açtığınızda venv otomatik olarak tekrar aktive olmaz; her yeni terminal oturumunda elle aktive etmeniz gerekir.
  • Aktivasyon komutu işletim sistemine göre küçük farklılıklar taşır (Windows'ta ve macOS/Linux'ta betik yolu farklıdır); bu farkı bilmemek "aktive ettim sandım" hissine yol açabilir.

Aktif olan ortamı kontrol etmenin en basit yolu, terminal satırının başındaki parantez içi isme bakmaktır — aktif bir venv genellikle isim etiketiyle görünür. Emin olmak isterseniz terminale pip show ile ilgili paketin adını yazıp o paketin hangi konumda kurulu olduğunu görebilir, bu yolu projenizin klasörüyle karşılaştırabilirsiniz. Sanal ortam kavramını ve paket yönetimini sıfırdan, uygulamalı biçimde oturtmak isteyenler için birebir Python dersleri bu tür ortam sorunlarını canlı örneklerle çözme fırsatı sunar. Unutmayın, venv karışıklığı bir beceri eksikliği değil, herkesin zaman zaman düştüğü küçük bir dikkat hatasıdır; fark ettiğinizde çözümü birkaç saniye sürer.

Neden 2: Yanlış Dizinden Çalıştırma ve sys.path Karışıklığı

Python bir modülü import ederken rastgele aramaz; belirli bir sırayla klasör listesine bakar. Bu liste sys.path adında bir dizi olarak tutulur ve içinde çalıştırdığınız dosyanın bulunduğu klasör, kurulu paketlerin dizini ve bazı standart kütüphane yolları yer alır. Kendi yazdığınız bir modülü import etmeye çalıştığınızda, Python o modülü bu listedeki klasörlerden birinde bulamazsa ModuleNotFoundError fırlatır — modül dosyası bilgisayarınızda var olsa bile.

Bu durumun en yaygın nedeni, script'i proje kök klasöründen değil, iç içe geçmiş bir alt klasörden çalıştırmaktır. Örneğin proje/kaynaklar/yardimci.py dosyasını içeren bir projede, ana script'i kaynaklar klasörünün içine girip oradan çalıştırırsanız, Python'un arama listesi değişir ve kök klasördeki diğer modülleri artık göremez. Klasör yapınız ne kadar iç içe geçerse, hangi dizinden komut çalıştırdığınızın önemi de o kadar artar.

Şüpheye düştüğünüzde en pratik yöntem, Python'a o an nereye baktığını doğrudan sormaktır:

import sys
for yol in sys.path:
    print(yol)

Bu birkaç satırlık kodu çalıştırdığınızda ekranda çıkan liste, Python'un modül ararken tarayacağı klasörlerin tam listesidir. Eğer aradığınız modülün bulunduğu klasör bu listede yoksa, sorunun kaynağını bulmuş olursunuz: ya script'i yanlış dizinden çalıştırıyorsunuzdur ya da modül dosyanız beklediğiniz konumda değildir. Bu basit kontrol, çoğu zaman dakikalar süren "neden bulamıyor" sorgulamasını saniyelere indirir.

Neden 3: Paketin Hiç Kurulmamış Olması

Bazen mesele ne yanlış sanal ortamdır ne de çalıştırma dizinidir; basitçe o paket bilgisayarınızda hiç kurulu değildir. Bu, özellikle yeni öğrenilen bir kütüphaneyle (örneğin requests, numpy ya da flask) ilk kez çalışırken karşılaşılan, oldukça sık rastlanan bir durumdur. Bir tutorial'da "şu kütüphaneyi import et" yazan bir satırı kopyalayıp yapıştırmak, o kütüphanenin sizin ortamınızda otomatik olarak belirmesini sağlamaz; kurulum ayrı bir adımdır.

Çözüm oldukça nettir: eksik olan paketi pip install komutuyla kurmak. Terminalde (aktif sanal ortam içindeyken) şu şekilde çalıştırılır:

  • pip install requests — tek bir paketi kurar
  • pip install requests numpy pandas — birden fazla paketi tek satırda kurar
  • pip install -r requirements.txt — bir proje dosyasında listelenen tüm bağımlılıkları toplu kurar

Kurulumdan emin olamıyorsanız, tahmin etmek yerine doğrulamak her zaman daha sağlıklıdır. pip list komutu, aktif ortamda o an kurulu olan tüm paketleri ve sürümlerini listeler; aradığınız isim bu listede yoksa hata mesajı size doğruyu söylüyor demektir. Uzun listede tek bir paketi aramak isterseniz işletim sisteminize göre pip list | grep requests veya pip list | findstr requests gibi bir filtreleme kullanabilirsiniz.

Daha ayrıntılı bir doğrulama için pip show paket_adi komutu devreye girer. Bu komut yalnızca paketin kurulu olup olmadığını değil; sürüm numarasını, kurulu olduğu dizin yolunu (Location) ve bağımlı olduğu diğer paketleri de gösterir. "Location" satırı özellikle değerlidir: paket beklediğiniz sanal ortamın klasöründe mi, yoksa sistem genelindeki başka bir Python kurulumunda mı görünüyor, bunu netleştirir. Eğer pip show "Package(s) not found" gibi bir çıktı veriyorsa, mesele artık şüphe değil kesinliktir: paket bu ortamda kurulu değildir ve pip install ile kurulması gerekir.

Üç Neden, Belirti ve Çözüm Karşılaştırması

Üç Neden, Belirti ve Çözüm Karşılaştırması

Üç neden birbirine benzer bir hata mesajıyla ortaya çıktığı için ayırt etmek ilk bakışta kafa karıştırıcı gelebilir; ama her birinin kendine özgü küçük ipuçları vardır. Sanal ortam karışıklığında paket "bir yerlerde" kuruludur ama terminalde farklı bir ortam aktiftir; dizin/sys.path sorununda proje dosyaları arasındaki import çalışmaz ama dış kütüphaneler sorunsuz çalışır; paketin hiç kurulmaması durumunda ise pip show paketi hiçbir yerde bulamaz. Bu üç ipucunu birlikte kontrol etmek, hatanın kaynağını dakikalar içinde netleştirir.

Neden Tipik Belirti Çözüm
Sanal ortam (venv) karışıklığı Paket bir terminalde çalışırken diğerinde çalışmaz; pip show farklı bir yol gösterir Doğru venv'i aktive edip paketi o ortamda yeniden kurmak
Yanlış dizin / sys.path sorunu Dış kütüphaneler çalışır ama kendi modül dosyalarınız bulunamaz Kodu proje kök dizininden çalıştırmak veya sys.path'i düzenlemek
Paket hiç kurulmamış pip list ve pip show paketi hiçbir yerde göstermez pip install paket_adi ile kurulumu yapmak

Bu üç senaryoyu ayrı ayrı tanımak, sadece bu hatayı değil ilerleyen konularda karşılaşacağınız benzer ortam sorunlarını da hızlıca çözebilme becerisi kazandırır. Bu tür pratik hata ayıklama alışkanlıkları, Python öğrenimine yönelik yazı dizimiz kapsamında adım adım işlenen konulardan biridir ve teoriden çok elinizi kirletmenizi gerektirir.

Hatayı Üretip Düzeltme: Uçtan Uca Kod Örneği

Bazen bir hatayı gerçekten anlamanın en iyi yolu onu kasıtlı olarak üretip sonra çözmektir. Aşağıdaki örnekte, sisteminizde muhtemelen kurulu olmayan bir paket import ediliyor ve ardından hata giderilerek kod tekrar çalıştırılıyor:

# hata_ornegi.py
import termcolor

print(termcolor.colored("Merhaba Berk Akademi!", "green"))

Bu dosyayı termcolor kurulu olmayan bir ortamda çalıştırdığınızda terminalde şuna benzer bir traceback görürsünüz:

Traceback (most recent call last):
  File "hata_ornegi.py", line 2, in <module>
    import termcolor
ModuleNotFoundError: No module named 'termcolor'

Panik yapılacak bir şey yok; bu, Python'un size "bu isimde bir modül bulamadım" demesinden ibaret. Çözüm tek satır:

pip install termcolor

Kurulum tamamlandıktan sonra dosyayı tekrar çalıştırdığınızda hata kaybolur ve ekranda renkli "Merhaba Berk Akademi!" yazısını görürsünüz. Bu basit döngü — hatayı oku, nedenini sınıflandır, ilgili komutu çalıştır, tekrar dene — aslında profesyonel yazılımcıların da günlük olarak yaptığı şeydir; farkı sadece deneyimle bu adımların otomatikleşmesidir.

Eğer bu adımları uyguladığınız hâlde hata ısrarla devam ediyorsa, ekranınıza bakan bir gözün sorunu saniyeler içinde teşhis etmesi çoğu zaman metin tabanlı ipuçlarını tek başına takip etmekten çok daha hızlı sonuç verir. Böyle durumlarda birebir Python özel dersleri üzerinden randevu alıp ortamınızı canlı olarak birlikte incelemek, saatlerce süren deneme-yanılma sürecini kısa bir oturuma indirebilir.

ModuleNotFoundError Çözerken İzlenecek Kontrol Listesi

Bu noktaya kadar anlattığımız üç nedeni tek tek incelemek yerine, hata ekranda belirdiği anda sırayla uygulayabileceğin kısa bir rota işe yarar. Panik yapmadan, yukarıdan aşağıya ilerlediğinde sorunun kaynağı genellikle ilk üç adımda ortaya çıkar. Aşağıdaki liste, tam da bu yüzden bir teşhis sırası gibi düşünülmeli; adımları atlamadan takip etmek, aynı hatayla tekrar tekrar karşılaşmanın önüne geçer.

  1. Hata mesajının son satırında yazan modül adını dikkatle oku ve not al; ModuleNotFoundError: No module named 'x' ifadesindeki "x" gerçekte aradığın paketin adıyla birebir aynı mı, kontrol et.
  2. Terminalde hangi sanal ortamda çalıştığını doğrula. Komut satırında ortam adının parantez içinde göründüğünden emin ol; farklı bir venv aktifse doğru olanı etkinleştir.
  3. Aktif ortamda paketin gerçekten kurulu olup olmadığını pip list komutuyla listele ve çıktıda ilgili paket adını ara.
  4. Paket listede yoksa pip install paket-adi komutuyla kur ve kurulumun ortam içine yapıldığından emin ol.
  5. Script'i proje kök dizininden mi yoksa başka bir alt klasörden mi çalıştırdığını kontrol et; yanlış dizinden çalıştırmak yerel modüllerin bulunamamasına yol açar.
  6. Şüphe devam ediyorsa Python içinden import sys; print(sys.path) satırını çalıştırıp çıktıdaki klasör listesini incele; beklediğin dizin listede yoksa import mekanizmasının neden başarısız olduğunu görürsün.

Bu altı adımı sırayla uyguladığında hatanın kaynağı neredeyse her zaman netleşir. Konuyu daha da pekiştirmek ve venv, import mekanizması gibi kavramlardaki bilgini ölçmek istersen Python bilgi seviyeni ölçen kısa test bu aşamada faydalı bir kontrol noktası olabilir.

Sık Sorulan Sorular

ModuleNotFoundError ile ImportError arasındaki fark nedir?

ModuleNotFoundError, ImportError'ın daha spesifik bir alt türüdür ve Python'un aradığı modülü hiçbir dizinde bulamadığı durumlarda ortaya çıkar. ImportError ise modül bulunsa bile içindeki bir fonksiyon, sınıf ya da değişkenin import edilemediği durumlarda da tetiklenebilir; yani modülün varlığı sorunlu değil, modülün içeriğine erişim sorunludur.

pip install yaptığım halde hata neden devam ediyor?

Bunun en sık nedeni, kurulumun bir sanal ortamda yapılıp scriptin başka bir ortamda ya da sistem genelindeki Python ile çalıştırılmasıdır. Kurulumdan hemen sonra pip list ile paketin aktif ortamda görünüp görünmediğini kontrol etmek bu karışıklığı hızlıca ortaya çıkarır.

Sanal ortamı (venv) her proje için ayrı mı oluşturmalıyım?

Evet, her proje için ayrı bir sanal ortam kullanmak paket sürümleri arasındaki çakışmaları önler ve bir projede yaptığın kurulumun başka bir projeyi etkilememesini sağlar. Bu alışkanlık, ModuleNotFoundError gibi hataların büyük bölümünü baştan engeller.

sys.path içine klasör eklemek güvenli bir çözüm müdür?

Küçük, geçici denemeler için sys.path'e klasör eklemek işe yarasa da kalıcı bir çözüm değildir; proje taşındığında veya başka bir makinede çalıştırıldığında aynı sorun tekrar ortaya çıkar. Daha sürdürülebilir yöntem, projeyi doğru dizin yapısıyla ve doğru sanal ortamla çalıştırmaktır.

Doğru sanal ortamda olup olmadığımı nasıl anlarım?

Terminalde komut satırının başında ortam adının parantez içinde göründüğünü görmen, o ortamın aktif olduğunun en net işaretidir. Ayrıca pip list çıktısında beklediğin paketlerin görünüp görünmediğini kontrol etmek de ek bir doğrulama sağlar.

pip list ve pip show arasındaki fark nedir?

pip list, aktif ortamda kurulu tüm paketlerin kısa bir listesini verirken; pip show belirli bir paketin sürümü, konumu ve bağımlılıkları gibi ayrıntılı bilgilerini gösterir. Bir paketin kurulu olup olmadığını hızlıca görmek için pip list, o paket hakkında daha fazla ayrıntı öğrenmek için pip show tercih edilir.

Bu hatayı bir daha hiç yaşamamak için ne yapmalıyım?

Her yeni proje için ayrı bir sanal ortam açmayı, paket kurulumlarını her zaman aktif ortamda yapmayı ve scriptleri tutarlı bir dizin yapısından çalıştırmayı alışkanlık haline getirmek bu hatanın tekrarını büyük ölçüde azaltır. Zamanla bu kontrol sırası neredeyse otomatik bir refleks haline gelir.

ModuleNotFoundError, Python öğrenirken hemen herkesin er ya da geç karşılaştığı, göründüğünden çok daha az korkutucu bir hatadır; hata mesajını sakince okuyup doğru sırayla ilerlediğinde çözüm genellikle birkaç dakika içinde bulunur. Sanal ortam ve import mantığı gibi konularda kendini daha sağlam hissetmek istersen birebir Python özel dersi bu tür pratik takılmaları birebir rehberlikle aşmanı kolaylaştırabilir.

Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

İlgili Eğitimler

Berk Keskin — Yazılım Geliştirici ve Eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; bugün öğrencinin seviyesine ve hedefine göre şekillenen sürdürülebilir öğrenme sistemleri tasarlıyor. 300'den fazla kişiye ezber değil, düşünerek kod yazmayı öğretti — Berk Akademi'de izlemeye değil üretmeye dayalı öğrenme kültürünü o kuruyor.

WhatsApp Hemen Ara