İçeriğe geç
Veri Rotası – Veri Bilimi ve Analitiği Rehberiniz
  • Python
  • R Programlama
  • Makine Öğrenmesi
  • Projeler
  • Veri Görselleştirme
Veri Rotası – Veri Bilimi ve Analitiği Rehberiniz
Python

Python Sanal Ortam (venv) ve pip ile Paket Yönetimi

Tarafındanhazar 26 Ekim 202626 Ekim 2026




Bir projede pandas‘ın eski bir sürümüne ihtiyacın var, diğerinde en yenisine. İkisini aynı Python’a kurarsan biri mutlaka bozulur. Bunu bir kere yaşayan kişi sanal ortamı bir daha asla atlamaz.

Bu derste Python sanal ortam kavramını, venv ile nasıl oluşturulduğunu ve pip ile paket yönetimini öğreneceğiz. Konu ilk bakışta sıkıcı görünebilir ama seri boyunca karşılaşacağın “modül bulunamadı” hatalarının büyük kısmı burada çözülüyor.

Table of Contents

Toggle
  • Sanal Ortam (Virtual Environment) Nedir?
    • Neden Gerekli?
  • venv ile Sanal Ortam Oluşturma
    • Arka Planda Ne Oldu?
  • Sanal Ortamı Aktifleştirme
    • PowerShell’de “Çalıştırma Politikası” Hatası
    • Aktifleştirme Arka Planda Ne Yapıyor?
    • Ortamdan Çıkmak
  • VS Code’u Sanal Ortamla Eşleştirme
  • pip ile Paket Yönetimi
    • Paket Kurma
    • En Çok Kullanacağın pip Komutları
  • requirements.txt: Projenin Malzeme Listesi
  • Sık Karşılaşılan Hatalar ve Çözümleri
    • ModuleNotFoundError: No module named ‘requests’
    • externally-managed-environment (Linux/Mac)
    • “ensurepip is not available” (Ubuntu/Debian)
    • Ortam Klasörünü Taşıdım veya Yeniden Adlandırdım, Bozuldu
    • pip “is not recognized” Hatası
  • Kontrol Listesi
  • Sıkça Sorulan Sorular
    • Her proje için ayrı sanal ortam mı gerekiyor?
    • venv ile conda arasındaki fark nedir?
    • Sanal ortam bilgisayarımda çok yer kaplar mı?
    • Sanal ortamı silmek tehlikeli mi?
  • Sırada Ne Var?

Sanal Ortam (Virtual Environment) Nedir?

Sanal ortam, bir projeye özel, izole bir Python çalışma alanıdır. İçinde kendi paket klasörü vardır. Orada kurduğun her kütüphane sadece o projeyi etkiler, bilgisayardaki diğer her şey olduğu gibi kalır.

Mutfak benzetmesi işe yarıyor: Her proje için ayrı bir tezgâh düşün. Birinde un döküldü diye diğerinin malzemesi karışmaz.

Neden Gerekli?

  • Sürüm çakışmalarını önler: Her proje kendi paket sürümlerini kullanır.
  • Sistem Python’unu korur: Özellikle Linux ve Mac’te işletim sistemi kendi araçları için Python kullanır. Oraya rastgele paket yığmak risklidir.
  • Projeyi taşınabilir yapar: Hangi paketlerin kurulu olduğunu bir dosyaya yazıp başka bilgisayarda aynı ortamı kurabilirsin.
  • Temiz başlangıç sağlar: Bir şey bozulursa ortamı silip yeniden kurarsın. Bilgisayarın etkilenmez.

Yeni Linux sürümlerinde sistem Python’una doğrudan pip install yapmaya çalışırsan externally-managed-environment hatası alırsın. Sistem seni bilerek durduruyor. Çözümü de bu dersin konusu.

venv ile Sanal Ortam Oluşturma

venv, Python’un içinde hazır gelen bir modül. Ayrı bir şey kurmana gerek yok (Ubuntu’da geçen derste python3-venv paketini kurmuştuk, hatırla).

VS Code’da python-dersleri klasörünü aç. Terminali açmak için Ctrl + ` tuşlarını kullan (Mac’te de aynı) ya da menüden Terminal > New Terminal seç. Sonra şu komutu yaz:

# Windows
python -m venv .venv

# Mac ve Linux
python3 -m venv .venv

Birkaç saniye sonra klasörünün içinde .venv adında yeni bir klasör belirecek. Ortamın adı olarak .venv seçmemin sebebi, VS Code gibi araçların bu ismi otomatik tanıması. Başka bir isim de verebilirsin ama standart olana bağlı kalmak işleri kolaylaştırıyor.

Arka Planda Ne Oldu?

Komut şunları yaptı:

  • .venv adında bir klasör oluşturdu.
  • İçine kullandığın Python yorumlayıcısına bağlı bir kopya (ya da bağlantı) yerleştirdi.
  • Boş bir site-packages klasörü açtı. Kuracağın tüm paketler artık buraya gidecek.
  • Kendi pip‘ini de ekledi.

Yani sanal ortam, sihirli bir kutu değil. Sıradan bir klasör ve içinde Python’un küçük bir kopyası. Sileceksen klasörü silmen yeterli.

Sanal Ortamı Aktifleştirme

Oluşturmak yetmez, kullanmadan önce aktifleştirmen gerekir. Komut sisteme göre değişiyor:

# Windows (Komut İstemi / cmd)
.venv\Scripts\activate

# Windows (PowerShell)
.venv\Scripts\Activate.ps1

# Mac ve Linux
source .venv/bin/activate

Başarılı olursa terminal satırının başında (.venv) yazısını görürsün. Bu yazı, o an ortamın içinde olduğunun işareti.

PowerShell’de “Çalıştırma Politikası” Hatası

PowerShell kullanıyorsan “bu sistemde betik çalıştırma devre dışı” gibi kırmızı bir hata görebilirsin. İngilizce hali “running scripts is disabled on this system”. Windows’un güvenlik ayarı yüzünden oluyor, sen bir şeyi yanlış yapmadın.

Çözüm olarak PowerShell’de şunu çalıştır:

# Sadece senin kullanıcın için, yerel betiklere izin verir
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

Onay isterse Y yazıp Enter’a bas, sonra aktifleştirmeyi tekrar dene. Terminali değiştirip cmd kullanmak da bir seçenek. İkisi de iş görür.

Aktifleştirme Arka Planda Ne Yapıyor?

Aktifleştirme komutu, o terminal oturumundaki PATH listesinin en başına .venv içindeki klasörü ekler. Artık python yazdığında sistem önce orayı arar ve ortamın kendi Python’unu bulur. Terminali kapattığında bu değişiklik de kaybolur.

Doğrulamak için şunu dene:

# Windows
where python

# Mac ve Linux
which python

Çıktıdaki ilk yolun içinde .venv geçiyorsa her şey yolunda.

Ortamdan Çıkmak

# Sanal ortamı kapat (tüm sistemlerde aynı)
deactivate

VS Code’u Sanal Ortamla Eşleştirme

Terminalde ortam aktif olsa bile VS Code’un kod çalıştırma düğmesi hâlâ eski Python’u kullanıyor olabilir. Bunu ayarlayalım:

  1. Ctrl + Shift + P (Mac’te Cmd + Shift + P) ile komut paletini aç.
  2. Python: Select Interpreter komutunu seç.
  3. Listede yanında .venv yazan seçeneği bul ve seç.

VS Code, .venv klasörünü tespit ettiğinde bazen sağ altta kendiliğinden “yeni bir ortam algılandı, kullanılsın mı?” diye sorar. Evet de. Bundan sonra yeni açtığın her terminal ortamı kendisi aktifleştirecek.

pip ile Paket Yönetimi

pip, Python’un paket yükleyicisidir. İnternetteki merkezi depodan (PyPI) kütüphaneleri indirip aktif ortama kurar.

Küçük bir not: komutları pip install ... yerine python -m pip install ... diye yazmayı alışkanlık edin. Bu biçim, pip’in o an kullandığın Python’a ait olduğundan emin olmanı sağlıyor. Birden fazla Python’u olanların başına gelen “paketi kurdum ama yok” derdini ciddi ölçüde azaltır.

Paket Kurma

Deneme için requests kütüphanesini kuralım. Web’den veri çekerken 45. derste yine karşımıza çıkacak:

# Ortam aktifken çalıştır: requests paketini kur
python -m pip install requests

Terminalde indirme ilerlemesi akacak, sonunda “Successfully installed” yazısını göreceksin. Paket, .venv/.../site-packages içine yerleşti. Bilgisayarın geri kalanı bundan habersiz.

Çalıştığını görmek için test_paket.py adında bir dosya aç:

# test_paket.py
# requests kütüphanesini içe aktar ve sürümünü yazdır
import requests

print(requests.__version__)

Çalıştırdığında bir sürüm numarası görürsen kurulum tamamdır. import satırını 29. derste ayrıntısıyla işleyeceğiz. Şimdilik “bu paketi kullanmaya hazırla” demek olduğunu bilsen yeter.

En Çok Kullanacağın pip Komutları

# Kurulu paketlerin listesi
python -m pip list

# Bir paketin ayrıntıları (sürüm, kurulum yeri vb.)
python -m pip show requests

# Belirli bir sürümü kur
python -m pip install requests==2.31.0

# Paketi güncelle
python -m pip install --upgrade requests

# Paketi kaldır
python -m pip uninstall requests

Belirli bir sürüm kurmak (== işaretiyle) ilk başta gereksiz görünebilir. Ama bir gün eski bir proje yeni sürümle çalışmayı bırakacak ve bu komut seni kurtaracak.

requirements.txt: Projenin Malzeme Listesi

Projeyi başka bir bilgisayara taşıyacaksan ya da bir arkadaşınla paylaşacaksan, hangi paketlerin hangi sürümle kurulu olduğunu bir dosyaya yazabilirsin:

# Kurulu paketleri requirements.txt dosyasına yaz
python -m pip freeze > requirements.txt

Başka bir bilgisayarda yeni bir sanal ortam oluşturup aktifleştirdikten sonra aynı paketleri tek komutla kurabilirsin:

# Listedeki tüm paketleri kur
python -m pip install -r requirements.txt

Burada önemli bir kural var: .venv klasörünü kimseyle paylaşma ve proje sürüm kontrolüne (Git) ekleme. Yüzlerce megabayt tutabilir ve başka bir bilgisayarda zaten çalışmaz. Paylaşılan şey ortamın kendisi değil, requirements.txt listesidir.

Sık Karşılaşılan Hatalar ve Çözümleri

ModuleNotFoundError: No module named ‘requests’

Paketi kurduğun halde bu hatayı alıyorsan neredeyse kesin sebep şu: Kodu çalıştıran Python ile paketi kurduğun Python farklı. VS Code’un sağ altındaki yorumlayıcıya bak. .venv seçili mi? Terminalde (.venv) yazısı var mı? İkisi de eşleşmiyorsa sorun orada.

externally-managed-environment (Linux/Mac)

Sanal ortam dışındayken sistem Python’una paket kurmaya çalıştın. --break-system-packages gibi bayraklarla zorlama. Ortamı aktifleştir ve kurulumu orada yap.

“ensurepip is not available” (Ubuntu/Debian)

Sanal ortam oluştururken bu hatayı görürsen python3-venv paketi eksik. Birinci derste anlattığım komutla kur:

sudo apt install python3-venv

Ortam Klasörünü Taşıdım veya Yeniden Adlandırdım, Bozuldu

Sanal ortamlar oluşturuldukları yolu içlerinde saklar. Klasörü taşıyıp adını değiştirince komutlar bozulabilir. Taşımaya çalışma. .venv‘i silip yeni yerde baştan oluştur ve requirements.txt ile paketleri geri kur. Bu iş bir iki dakika sürer.

pip “is not recognized” Hatası

Bu durumda pip yazmak yerine python -m pip kullan. Çoğu zaman sorun kendiliğinden çözülür. Çözülmüyorsa Python’un PATH’e eklendiğini yeniden kontrol et (Ders 1).

Kontrol Listesi

  • ✅ python-dersleri klasöründe .venv oluşturdum.
  • ✅ Terminalde (.venv) yazısını görüyorum.
  • ✅ VS Code’da yorumlayıcı olarak .venv seçili.
  • ✅ python -m pip install requests hatasız tamamlandı.
  • ✅ test_paket.py bir sürüm numarası yazdırdı.

Sıkça Sorulan Sorular

Her proje için ayrı sanal ortam mı gerekiyor?

Gerçek projelerde evet, her proje kendi ortamına sahip olmalı. Bu serideki dersler için ise tek bir python-dersleri klasörü ve tek bir .venv yeterli.

venv ile conda arasındaki fark nedir?

venv, Python’la gelen hafif bir araçtır ve sadece Python paketlerini yönetir. conda ise Python dışı bileşenleri de yönetebilen, daha kapsamlı bir sistem. Biz bu seride venv kullanacağız çünkü ek kurulum gerektirmiyor ve mantığı anlamak daha kolay.

Sanal ortam bilgisayarımda çok yer kaplar mı?

Boşken birkaç on megabayt tutar. Pandas v