Python'da "pip is not recognized as an internal or external command, operable program or batch file." hatasını çözmek için önce pip yerine python -m pip komutunu dene. Windows'ta py -m pip da aynı işi görür. Bunlar da çalışmazsa sırayla sanal ortamın açık olup olmadığına, pip'in kurulu olup olmadığına ve en son PATH ayarına bakarsın. Bu yazı o sırayı adım adım izliyor.
Bu hata ne anlama geliyor ve önce neyi kontrol etmelisin?
Hata, Windows komut isteminin pip adında çalıştırılabilir bir dosyayı baktığı klasörlerde bulamadığını söyler. Python'un bozuk olduğu ya da hiç kurulmadığı anlamına gelmez. Pip büyük ihtimalle yerinde duruyordur, komut istemi ona giden yolu bilmiyordur. Windows'un dili Türkçeyse aynı mesajı Türkçe görebilirsin, anlamı değişmez.
İlk işin, Python'un bu bilgisayarda hangi adla çalıştığını görmek olsun. Komut istemini açıp şu iki komutu dene:
python --version
py --version
İkisi de "Python" ile başlayan bir satır yazdırıyorsa yorumlayıcıya iki adla da ulaşabiliyorsun demektir. py, Windows'ta Python kurulumlarını yönetmek için kullanılan başlatıcıdır. python.org'un Windows belgesine göre py varsayılan olarak python gibi davranır, ayrıca belirli bir sürümü seçmene de izin verir. Her kurulum yöntemi bu komutu eklemeyebilir. py komutunun yanıt vermemesi tek başına bir sorun değildir.
Hangi komutun yanıt verdiğine göre yön belirlersin:
- İkisi de çalışıyor: Python'a ulaşabiliyorsun. Sıradaki bölümdeki
python -m pipyöntemine geç. - python tanınmıyor, py çalışıyor: Python kurulu ve
pyonu buluyor. Bu durumdapy -m pipkomutunu kullan. - python çalışıyor, py tanınmıyor:
python -m pipkomutunu kullan. - İkisi de tanınmıyor: Komut istemi Python'u da bulamıyor olabilir. Python'u kurduğundan emin ol, komut istemini kapatıp yeniden aç ve iki komutu tekrar dene.
pip yerine python -m pip: aynı kurulum, iki farklı komut

Aşağıdaki örnekte aynı paket üç farklı biçimde kuruluyor. Paket olarak sık kullanılan requests kütüphanesini seçtim:
C:Usersogrenci> pip install requests
'pip' is not recognized as an internal or external command,
operable program or batch file.
C:Usersogrenci> python -m pip install requests
C:Usersogrenci> py -m pip install requests
Beklenen sonuç şöyledir: İlk komut yukarıdaki hata mesajını verir. İkinci ve üçüncü komut paketi indirip kurarken ekrana "Collecting requests" ve "Installing collected packages" gibi satırlar yazdırır, sonunda kurulumun başarılı olduğunu belirtir. Paket zaten kuruluysa "Requirement already satisfied" yazar, bu da normaldir.
Komuttaki parçalar şunları yapar. python ya da py yorumlayıcıyı başlatır. -m, Python'a "şu modülü çalıştır" demektir. Burada çalıştırılan modül pip'in kendisidir. install requests ise pip'e verilen asıl iştir. Yani pip adlı ayrı bir dosyayı aramak yerine Python'u açıp pip'i onun içinden başlatmış olursun. pip'in kendi belgesi de python -m pip komutunun pip'i senin belirttiğin Python yorumlayıcısıyla çalıştırdığını, Windows'ta py -m pip komutunun ise kurulu Python'lar arasından en son sürümü kullandığını anlatır.
Komutun adı değil, pip'i çalıştıran Python yorumlayıcısı önemlidir. Bunu görmek için şu komutu çalıştır:
python -m pip --version
Çıktıda pip'in sürümü, pip'in bulunduğu klasör ve bağlı olduğu Python yorumlayıcısı görünür. Yol satırı site-packages klasörünü içerir. Paketleri nereye kurduğunu bilmek istediğinde bu satıra bakarsın. Aynı bilgisayarda birden fazla Python varsa komutlar farklı yolları yazdırabilir. Sonraki bölümde bu durumun sanal ortamla ilişkisini inceleyeceğiz.
Sanal ortam (venv) açıkken hangi Python çalışıyor?
Sanal ortam, bir projeye ait paketleri sistemdeki genel Python'dan ayrı tutan klasördür. Bu ortamın kendi Python'u ve kendi pip'i vardır. Ortam etkin değilse ya da yanlış yorumlayıcı çalışıyorsa pip hatası bu yüzden çıkabilir. Komutun adı değil, pip'i çalıştıran Python yorumlayıcısı önemlidir.
Ortamı oluşturma ve etkinleştirme
Komut isteminde proje klasörüne geçip ortamı oluştur, ardından Scripts klasöründeki etkinleştirme betiğini çalıştır:
python -m venv venv
venvScriptsactivate.bat
Etkinleştirme başarılı olduysa komut isteminin başında parantez içinde ortam adı görünür, örneğin (venv). Etkinleştirme betiği, ortamın Scripts klasörünü PATH'in başına ekler. Bu sayede python yazdığında ortamın kendi Python'u çalışır.
Hangi Python çalışıyor?
Ortam adını görmen tek başına yeterli kanıt sayılmaz. Yorumlayıcının yolunu iki yolla kontrol edebilirsin:
(venv) C:projelerdeneme> where python
C:projelerdenemevenvScriptspython.exe
C:GenelPythonpython.exe
(venv) C:projelerdeneme> python -c "import sys; print(sys.executable)"
C:projelerdenemevenvScriptspython.exe
where python komutu, PATH'te bulunan eşleşmeleri üstten alta listeler. Komut istemi ilk satırdakini çalıştırır. Yollar bu örnekte genel bir biçimde yazıldı, senin bilgisayarında klasör adları farklı olacaktır.
- İlk satır ortam klasörünü gösteriyorsa: ortam etkindir ve
python -m pipo ortamın pip'ini çalıştırır. - Yol
venvScriptsiçermiyorsa: ortam etkin değildir ya da başka bir yorumlayıcı öne geçmiştir. Etkinleştirme komutunu yeniden çalıştır.
Sık yaşanan iki karışıklık
İlki, ortamı oluşturup etkinleştirmeden paket kurmaya çalışmaktır: paket ortama değil, genel Python'a gider. İkincisi, yeni bir komut istemi penceresi açmaktır. Etkinleştirme yalnızca açıldığı pencere için geçerlidir. Yeni pencerede ortam adı görünmüyorsa proje klasörüne geçip betiği yeniden çalıştır.
pip gerçekten kurulu mu? --version ve ensurepip ile kontrol

Doğru yorumlayıcıyı seçtikten sonra pip'in o yorumlayıcıda kurulu olup olmadığına bak:
python -m pip --version
Pip kuruluysa çıktıda pip'in sürüm numarası, pip klasörünün yolu ve Python sürümü tek satırda görünür. Yoldaki klasör, hangi Python'a ait pip'i çalıştırdığını da gösterir.
No module named pip yanıtı gelirse bu yorumlayıcıda pip yok demektir. Python'un standart kitaplığındaki ensurepip modülü pip'i kurmak için hazırdır. Python dokümantasyonuna göre bu modül, pip'i mevcut bir Python kurulumuna ya da sanal ortama kurmak için kullanılır. Gerek, Python kurulurken ya da sanal ortam oluşturulurken pip'in atlandığı ya da sonradan kaldırıldığı durumlarda doğar.
python -m ensurepip
python -m pip --version
İlk komut pip'i kurar, ikincisi kurulumu doğrular. Dağıtıcıdan gelen bazı Python kopyalarında ensurepip bulunmayabilir. Böyle bir durumda Python'u hangi kaynaktan edindiysen onun yönergelerine bakmak gerekir.
| Çıktı | Anlamı | Sonraki adım |
|---|---|---|
| pip sürümü ve klasör yolu görünüyor | Bu yorumlayıcıda pip kurulu | Paketi python -m pip install ile kur |
| No module named pip | Bu yorumlayıcıda pip yok | python -m ensurepip çalıştır, sonra --version ile tekrar dene |
| python is not recognized | Komut istemi Python'u bulamıyor | py -m pip --version dene, olmazsa PATH kontrolüne geç |
Paket kurulumu çalıştıktan sonra kendi seviyeni görmek istersen ücretsiz Python bilgi testini çözüp hangi konularda pekiştirme yapman gerektiğini görebilirsin.
PATH ayarı: tek çözüm değil, sıradaki kontrollerden biri
PATH, Windows'un bir komutu yazdığında çalıştırılabilir dosyayı hangi klasörlerde arayacağını tutan klasör listesidir. pip yazdığında komut istemi bu listedeki klasörlere bakar ve pip.exe dosyasını bulamazsa hata verir. pip.exe Python'un kurulum klasöründeki Scripts alt klasöründe durur. Bu klasör PATH'te yoksa Python kurulu ve pip çalışır durumda olsa bile doğrudan pip komutu tanınmaz.
Bu yüzden python -m pip ya da py -m pip PATH'e bağımlı değildir. Bu komutlarda Windows önce Python'u bulur, pip'i Python çalıştırır. PATH düzeltmesi, yalnızca kısa pip yazmaya devam etmek isteyenler için bir seçenektir. Önceki bölümlerdeki kontroller sonuç verdiyse bu adıma gerek kalmayabilir.
PATH'i adım adım incele
Önce komut isteminde pip'in nerede olduğuna bak:
where pip
pip bulunursa çıktı <Python klasörü>Scriptspip.exe biçiminde bir yol gösterir. Bu durumda dosya PATH üzerinden bulunuyor demektir ve sorun başka yerdedir, örneğin farklı bir Python ya da etkin ortam. Komut "Could not find files" benzeri bir mesaj verirse pip PATH'te görünmüyordur. Şunları dene:
- Başlat menüsünde "ortam değişkenleri" yazıp sistem ortam değişkenlerini düzenleme penceresini aç.
- Kullanıcı değişkenlerinde
Pathsatırını seçip Düzenle'ye tıkla. - Listede Python'un kurulum klasörünün ve onun içindeki
Scriptsklasörünün olup olmadığına bak. Eksikse yeni satır olarak ekleyebilirsin. - Pencereleri Tamam ile kapat, açık komut istemini kapat ve yenisini aç.
Son adım önemlidir: açık bir komut istemi, PATH'in kendi açıldığı andaki hâlini kullanır. Değişiklik ancak yeni açılan pencerede görünür.
Kurulum sihirbazındaki PATH seçeneği
PATH'i elle düzenlemek yerine Python'u yeniden kurmayı da düşünebilirsin. Resmî Windows dokümantasyonuna göre kurulum sihirbazının ilk sayfasında, kurulum konumunu PATH'e ekleyen "Add Python to PATH" etiketli bir seçenek bulunabilir. Seçeneğin adı ve yeri kurulum sürümüne göre değişebilir. Bu yüzden sihirbazı yeniden çalıştırırken PATH ile ilgili kutunun işaretli olup olmadığını kontrol et. Kurulum seçeneği PATH'e yalnızca Python klasörünü değil Scripts klasörünü de eklediğinde, doğrudan pip komutu çalışır.
Terminal kullanımını ve kurulumu baştan, uygulayarak izlemek istersen ücretsiz Sıfırdan Temel Python video eğitimi kendi hızında ilerleyebileceğin bir başlangıç noktası olabilir.
Adım adım kontrol listesi ve takıldığında ne yapmalı?
Hatayı çözmek için aşağıdaki sırayı baştan sona izleyebilirsin. Her adımın sonucu bir sonrakine neye bakacağını söyler.
- Python'un çalıştığını doğrula:
python --versionya dapy --versionyaz. Sürüm bilgisi görünüyorsa Python bulunuyor demektir. - pip'i Python üzerinden çağır:
py -m pip --versionya dapython -m pip --versionyaz. Çıktıda pip'in hangi klasörden çalıştığı yazar. - Etkin ortamı ve yorumlayıcı yolunu kontrol et: Komut isteminin başında
(venv)gibi bir ortam adı var mı,where pythonhangi yolu gösteriyor, bak. - pip'i yeniden kur: 2. adım pip bulunamadı derse
python -m ensurepipkomutunu çalıştır ve ardından 2. adımı tekrarla. - PATH'i incele:
where pipile dosyanın yolunu ara, gerekirseScriptsklasörünü PATH'e ekle. - Komut istemini yeniden aç: PATH değişikliğinden sonra pencereyi kapatıp yeni bir komut istemi aç ve komutları yeniden dene.
- Çözülmediyse hata metnini kaydet: Hata mesajının tamamını, çalıştırdığın komutla birlikte kopyala. Yardım isteyeceğin kişi ya da Öğrenim Asistanı için en değerli bilgi budur.
Terminalde takıldığında rastgele komut denemek yerine bu gibi adım adım ilerlemek, sorunun hangi katmanda olduğunu görmeni sağlar. Kurulum ve ortam sorunları, programlamayı öğrenirken sık karşılaşılan engellerdir. Birebir Python özel ders programında bu tür sorunlar, online ya da İzmir'de yüz yüze işlenen ders akışının doğal bir parçası olabilir. Kişiye özel müfredat içinde ilerlerken Öğrenci Portalı'ndaki Öğrenim Asistanı da hazır çözüm vermek yerine adım adım düşünmene yardım eder.
Sık Sorulan Sorular
pip is not recognized hatası python yüklü olduğu hâlde neden çıkıyor?
Python kurulu olsa da pip.exe dosyasının bulunduğu Scripts klasörü PATH'te olmayabilir. Komut istemi de doğrudan pip yazdığında bu dosyayı bulamaz. Etkin bir sanal ortamın farklı bir Python kullanması ya da pip'in kurulmamış olması da aynı mesaja yol açabilir. py -m pip --version bu ihtimalleri ayırt etmenin hızlı yoludur.
python -m pip ile py -m pip arasındaki fark nedir?
İkisi de pip modülünü bir Python yorumlayıcısı ile çalıştırır. Fark, yorumlayıcıyı bulma biçimindedir: python komutu PATH'te bulunan Python'u kullanır. py ise Windows'ta Python ile birlikte gelen başlatıcıdır ve kurulu Python'ları kendisi bulabilir. Bu yüzden PATH eksik olduğunda py sıklıkla yine çalışır.
pip komutunu PATH'e eklemeden paket kurmak mümkün mü?
Evet. python -m pip install paket_adi ya da py -m pip install paket_adi yazarak PATH'e dokunmadan paket kurabilirsin. Bu komutlar pip'i Python üzerinden çağırdığı için Scripts klasörünün PATH'te olması gerekmez.
Komut istemini kapatıp açmadan PATH değişikliği neden çalışmıyor?
Komut istemi açıldığında ortam değişkenlerinin o anki hâlini alır ve çalıştığı sürece bunu kullanır. Sonradan yaptığın PATH değişikliği zaten açık olan pencereye yansımaz. Pencereyi kapatıp yenisini açtığında güncel liste okunur.
Hata mesajı ilk bakışta büyük görünse de çoğu zaman tek bir sorunun, yani Windows'un hangi Python'u ve hangi klasörü kullandığının işaretidir. Kontrolleri sırayla yaptığında nedeni bulmak kolaylaşır.