Python ModuleNotFoundError: No module named 'requests' hatası, kodu çalıştıran Python'un requests paketini kendi ortamında bulamadığını söyler. Çözüm iki adımdır: paketi kodu çalıştıran yorumlayıcıyla kurmak (python -m pip install requests) ve kurulumu import ile doğrulamak. Kurulumu yapan Python ile kodu çalıştıran Python aynı değilse paket kurulu görünse bile hata sürer.
Bu hata ne anlatıyor: Python 'requests' paketini hangi ortamda arıyor?
Hatayı iki satırlık bir dosyayla üretebilirsin:
import requests
print(requests.get("https://example.com").status_code)
Paket kurulu değilse çıktı şuna benzer:
Traceback (most recent call last):
File "main.py", line 1, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
Mesajı alttan yukarı okumak işini kolaylaştırır:
- ModuleNotFoundError: hata türü. Python, import edilmek istenen modülü bulamadı.
- No module named 'requests': eksik modülün adı. Tırnak içindeki ad, import satırında yazdığın addır.
- File "main.py", line 1: hatanın hangi dosyada ve hangi satırda çıktığı. Burada ilk satırdaki
importbaşarısız olduğu için ikinci satıra hiç geçilmedi.
requests, Python'un standart kütüphanesine dahil değildir; ayrıca kurulması gereken harici bir pakettir. Python her kurulumda yalnızca kendi ortamına yüklenmiş paketleri arar. Bir bilgisayarda birden fazla Python ya da sanal ortam bulunabildiği için asıl mesele paketin var olup olmaması değil, hangi ortamda var olduğudur. Paket kurulumu ile Python'un paketi aradığı ortam aynı değilse import başarısız olur.
Dört adımda teşhis: yorumlayıcı, pip, kurulu mu, kurulum

Komutları sırayla çalıştır; her adım bir sonrakinin dayanağıdır. Aşağıda python yazıyoruz. Sisteminde komutun adı farklı olabilir; bu ayrım yazının ilerleyen bölümlerinde ele alınıyor.
- Kodu çalıştıran yorumlayıcıyı bul.
Çıktı, bu komutu çalıştıran Python programının tam yoludur. Bir sanal ortam kullanıyorsan yolun o ortamın klasörünü göstermesini beklersin. Bu yolu not al; sonraki adımlarda karşılaştıracaksın.python -c "import sys; print(sys.executable)" - pip'in aynı yorumlayıcıya bağlı olduğunu doğrula.
Çıktıda pip sürümü, pip'in bulunduğu klasör ve Python sürümü görünür. Klasör yolu 1. adımdaki Python'un ortamıyla uyuşuyorsa doğru yerdesin. Uyuşmuyorsa pip başka bir Python'a bağlıdır.python -m pip --version - Paket bu ortamda kurulu mu, bak.
Kuruluysa paketin adı, sürümü ve konumu listelenir. Kurulu değilse pip, paketin bulunamadığını bildiren bir uyarı verir.python -m pip show requests - Kurulu değilse kur.
python -m pip install requests
Burada python -m pip ile çıplak pip arasındaki fark önemlidir. python -m pip, pip'i seçtiğin yorumlayıcının modülü olarak çalıştırır; yani kurulum kesinlikle o Python'a yapılır. Çıplak pip ise PATH'te bulunan ilk pip programına gider ve bu, kodunu çalıştırdığın Python'dan farklı bir Python'a ait olabilir.
Kurulum bitince sonucu mutlaka doğrula:
python -c "import requests; print('requests hazır')"
Beklenen çıktı tek satırdır: requests hazır. Aynı hata mesajı yeniden çıkıyorsa kurulum ile çalıştırma farklı ortamlarda yapılıyor demektir; 1. ve 2. adımdaki yolları yeniden karşılaştır.
Paket adı ile import adı her zaman aynı mıdır?
requests örneğinde kurulum adı ile import adı aynıdır. Hata mesajındaki requests adını doğrudan python -m pip install requests komutuna yazabilirsin. Her pakette böyle olmaz; bazı paketler bir adla kurulur, başka bir adla içe aktarılır:
- Pillow kurulur,
PILiçe aktarılır. - beautifulsoup4 kurulur,
bs4içe aktarılır. - scikit-learn kurulur,
sklearniçe aktarılır. - PyYAML kurulur,
yamliçe aktarılır. - opencv-python kurulur,
cv2içe aktarılır.
Kural şudur: hata mesajındaki ad import adıdır. Kurulum adını paketin dokümantasyonu ya da PyPI sayfası söyler. Örneğin No module named 'bs4' hatasında pip install bs4 yazmak yerine önce paketin sayfasına bakıp kurulum adını (beautifulsoup4) öğrenmelisin.
Sanal ortam etkin mi? Doğru ortamda kurulum nasıl yapılır?

Sanal ortam, her projenin paketlerini ayrı bir klasörde tutan yalıtılmış bir Python kurulumudur. Bir ortamda kurduğun paket diğerinde görünmez; requests bir projede çalışıp ötekinde hata vermesinin sebebi budur.
Ortamın etkin olup olmadığını iki yerden anlarsın. Terminal satırının başında ortam adı (ör. (.venv)) görünür. Ayrıca şu komut proje klasöründeki ortamın içindeki Python'u göstermelidir:
python -c "import sys; print(sys.executable)"
Çıktı proje klasöründeki .venv yolunu içermiyorsa ortam etkin değildir. Ortamı oluşturup etkinleştirmek için proje klasöründe şunları çalıştır:
# Ortamı oluştur (tüm sistemlerde)
python -m venv .venv
# Windows'ta etkinleştir
.venvScriptsactivate
# macOS ve Linux'ta etkinleştir
source .venv/bin/activate
# Aynı terminalde kur ve doğrula
python -m pip install requests
python -c "import requests; print(requests.__file__)"
Son komut hata vermeden .venv içindeki bir dosya yolunu yazdırıyorsa paket doğru ortamdadır. python komutu sisteminde çalışmıyorsa python3 ya da Windows'ta py gibi seçenekleri deneyebilirsin; komut adı işletim sistemine ve kuruluma göre değişir.
Bazı Linux dağıtımlarında sistem Python'una doğrudan pip ile kurulum yapmaya çalışınca externally-managed-environment uyarısı çıkabilir. Bu uyarı, sistemin kendi paket yöneticisiyle yönetilen ortamı korumak içindir (PEP 668). Proje paketleri için sanal ortam kullanmak bu durumda genellikle uygun çözümdür.
Ortam, paket ve import kavramlarını sıfırdan oturtmak istersen ücretsiz Sıfırdan Temel Python video eğitimi yeni başlayanlar için hazırlanmıştır ve kendi hızında izlenebilir.
Kurulum başarılı ama hata sürüyor: IDE, birden çok Python ve komut adı farkı
Kurulum mesajı "başarılı" dese bile paket, kodu çalıştıran yorumlayıcıya kurulmamış olabilir. Bilgisayarda birden çok Python bulunabilir; editör, terminal ve not defteri ortamları bunlardan farklı olanları kullanabilir. Aşağıdaki tablo belirtiden olası nedene gitmeni sağlar.
| Belirti | Olası neden | İlk kontrol |
|---|---|---|
| Terminalde import çalışıyor, editörde hata veriyor | Editör farklı bir yorumlayıcı kullanıyor | Editörde seçili yorumlayıcıyı, terminaldeki sys.executable çıktısıyla karşılaştır |
| pip install başarılı, import hata veriyor | pip başka bir Python'a bağlı | Kurulumu python -m pip install requests biçiminde, kodu çalıştıran yorumlayıcıyla yap |
| Sanal ortam etkinken çalışıyor, etkin değilken çalışmıyor | Paket yalnız o ortamda kurulu | Kodu hangi ortamda çalıştıracağına karar ver, kurulumu o ortamda tekrarla |
| Kurulumdan hemen sonra aynı oturumda hata sürüyor | Açık terminalin ya da editörün yeniden başlatılması gerekebilir | Terminali ya da editörü kapatıp aç, sonra import'u yeniden dene |
Editörde doğru yorumlayıcıyı seçmek
VS Code ve PyCharm gibi editörler, projeye bir Python yorumlayıcısı bağlamana izin verir. Mantık hepsinde aynıdır: kodu çalıştıran düğme bu seçili yorumlayıcıyı kullanır, editörün içindeki terminal ise başka bir Python'u gösteriyor olabilir. Ayarın menüdeki yeri sürümden sürüme değişebildiği için adını ezberlemek yerine editörün yorumlayıcı ya da ortam seçimi bölümünü bul ve projenin sanal ortamını seç. Seçimin doğru olup olmadığını kodun içinden de görebilirsin:
import sys
print(sys.executable)
import requests
print(requests.__file__)
İlk satır çalışan yorumlayıcının yolunu yazar. import requests başarılıysa ikinci satır paketin bulunduğu dosyayı gösterir. Hata alırsan ilk çıktı, paketi hangi yorumlayıcıya kurman gerektiğini söyler.
python, python3 ve py: komut adı sisteme göre değişir
Komut adı tek bir doğruya bağlı değildir. Windows'ta Python kurulumuyla gelen py başlatıcısı yaygın bir seçenektir. macOS ve Linux'ta çoğunlukla python3 kullanılır, bazı kurulumlarda ise python çalışır. Hangisinin hangi yorumlayıcıyı açtığını python --version (ya da py --version) ve yukarıdaki sys.executable ile kontrol et. Sonra kurulumu aynı komut adıyla yap ve hemen doğrula:
py -m pip install requests
py -c "import requests; print('requests hazır')"
python3 -m pip install requests
python3 -c "import requests; print('requests hazır')"
Kendi sistemine uyan satırı kullan. Beklenen çıktı requests hazır satırıdır; ModuleNotFoundError görürsen kurulum başka bir yorumlayıcıya gitmiştir. Jupyter gibi ortamlarda da çekirdeğin hangi yorumlayıcıyı kullandığına bakmalı, kurulumu o yorumlayıcıya yapmalısın.
Ortam, yorumlayıcı ve paket kavramlarının hangi noktada eksik kaldığını görmek istersen ücretsiz Python bilgi testini çözebilirsin.
Hatayı bir daha almamak için kısa kontrol listesi
- Her projede ayrı bir sanal ortam kullan; paketler projeye ait kalsın.
- Kurulumu her zaman
python -m pip install paket_adıbiçiminde, kodu çalıştıracağın yorumlayıcıyla yap. - Kurulumdan sonra tek satırlık import testi çalıştır:
python -c "import requests". Hata vermiyorsa kurulum doğru yerdedir. - Editörde seçili yorumlayıcıyı, terminaldeki
sys.executableçıktısıyla karşılaştır. - Hata mesajındaki modül adını import adı olarak oku; kurulacak paket adı bundan farklı olabilir.
Harici paketleri, ortamları ve hata mesajlarını okuma alışkanlığını birebir ilerleyerek geliştirmek istersen Python Özel Ders programı buna uygun. Ders içeriği öğrencinin seviyesine göre şekillenir, kayıt başvuruyla alınır ve başvurunun ardından ücretsiz bir ön görüşme yapılır.
Sık Sorulan Sorular
pip install requests başarılı göründü ama hata devam ediyorsa ne yapmalıyım?
Önce kodu çalıştıran yorumlayıcıyı sys.executable ile öğren. Sonra kurulumu aynı yorumlayıcıyla python -m pip install requests (Windows'ta py -m pip install requests) biçiminde tekrarla ve -c "import requests" ile doğrula. Hata sürerse terminali ya da editörü yeniden başlat.
requests Python'a yerleşik gelmiyor mu, neden ayrıca kurmam gerekiyor?
requests, Python'un standart kütüphanesinde bulunmayan harici bir pakettir. Bu yüzden her Python ortamına ayrıca kurulması gerekir. Standart kütüphane modülleri ise ek kurulum olmadan import edilebilir.
Jupyter Notebook'ta requests modülü bulunamıyor hatası nasıl çözülür?
Not defteri, çekirdeğin kullandığı yorumlayıcıyı kullanır. Bir hücrede import sys; print(sys.executable) çalıştırıp çıkan yorumlayıcıyla -m pip install requests komutunu çalıştır. Ardından çekirdeği yeniden başlatıp import'u dene.
Birden fazla Python kuruluysa hangisine kurulum yaptığımı nasıl anlarım?
python -m pip --version çıktısı, pip'in hangi Python ortamına bağlı olduğunu yol olarak gösterir. Bu yolu, kodun içinden aldığın sys.executable çıktısıyla karşılaştır. İkisi aynı ortamı gösteriyorsa kurulum doğru yerdedir.
Hata mesajı modülün adını ve aramanın başarısız olduğunu söyler; yorumlayıcıyı doğrulamak ve kurulumu aynı yorumlayıcıyla yapmak çözümü oluşturur.