pip Komutları: Python Paketi Kurmak, Güncellemek ve Sürümü Sabitlemek
pip ile paket kurmanın, sürüm koşulu yazmanın, güncellemenin, kaldırmanın ve kurulu paketleri denetlemenin komutlarını; sık görülen pip hatalarının nedenlerini öğrenirsiniz.
Bir bakışta
- python -m pip biçimi doğru yorumlayıcıyı garanti eder. Düz pip komutu başka bir Python'a bağlı olabilir; python -m pip hangi yorumlayıcıyı kullandığınızı belirler.
- pip kurulu sürümü kendiliğinden yükseltmez. Güncellemek için --upgrade vermeniz gerekir.
- Sürüm koşulu yazmak, gelecekteki bozulmayı önler. == tam sürümü, >= alt sınırı sabitler.
- pip freeze kilit dosyası üretmez. Kurulu olanı ad==sürüm biçiminde listeler.
- Sistem Python'una kurulum çoğu zaman engellenir. Çözüm bir sanal ortam ya da pipx kullanmaktır.
pip nedir, neden python -m pip yazılır
pip, Python paketlerini kuran standart araçtır. Bir paket adı verirsiniz; pip onu ve ihtiyaç duyduğu bağımlılıkları bulur, gerekirse derler ve kurar. pip belgelerine göre kurulum dört aşamada ilerler: temel gereksinimleri belirlemek, bağımlılıkları çözmek, gerekenler için wheel derlemek ve kurmak.
Komutu çağırmanın önerilen yolu python -m pip biçimidir; Windows'ta py -m pip yazılır. Bu biçim, pip'in sizin seçtiğiniz yorumlayıcıyla çalışmasını sağlar. Makinede birden çok Python varsa düz pip komutu, beklemediğiniz bir yorumlayıcının ortamına paket kurabilir ve kurduğunuz paketi çalıştırdığınız Python'da bulamazsınız. Örneklerin hepsi bu biçimdedir.
Bir paketi kurmanın en kısa hâli şudur:
python -m pip install requests
Kurulum başarılı olduğunda paket, çalıştığınız ortamın site-packages klasörüne yerleşir. Sanal ortam kurma ve etkinleştirme ayrı bir konudur; konu pip komutlarının kendisidir.
Paket kurmak: ad, sürüm koşulu ve dosya
install komutu birkaç biçimde çalışır. Paket adı, ad ve sürüm koşulu, bir gereksinim dosyası, yerel bir klasör ya da bir sürüm kontrol adresi verebilirsiniz.
python -m pip install requests python -m pip install 'requests==<sürüm>' python -m pip install 'requests>=<sürüm>' python -m pip install -r requirements.txt python -m pip install -e ./benim-projem
Burada <sürüm> yerine kullanmak istediğiniz sürüm numarasını yazarsınız. Koşulu tırnak içine almak, kabuğun > işaretini yönlendirme sanmasını önler.
Bilmeniz gereken davranışlar:
- pip, zaten kurulu bir sürümü, --upgrade vermediğiniz sürece olduğu gibi bırakır
- Koşulu karşılayan en yeni sürümü kurar
- Varsayılan olarak yalnız kararlı sürümleri kullanır; ön sürümler için --pre gerekir
- -e ile düzenlenebilir kurulum yapar; kendi projenizi geliştirirken kodu değiştirip yeniden kurmadan denersiniz
- --user paketi sistem klasörü yerine kullanıcıya özel klasöre kurar
Son madde sık yanlış kullanılır. --user bir sanal ortamın yerini tutmaz; paketleri projeye değil kullanıcı hesabına bağlar.
Sürüm sabitleme: tam sürüm mü, alt sınır mı
Paket adını sürümsüz yazmak, bir sonraki kurulumda farklı bir sürüm gelmesi demektir. Betiğiniz bugün çalışırken bir ay sonra çalışmayabilir. Sürüm belirteçleri bu riski yönetir.
İki uç yaklaşım vardır. Tam sürüm (==) kesin tekrarlanabilirlik sağlar ama güvenlik düzeltmelerini kendiniz izlemeniz gerekir. Alt sınır (>=) güncellemelere açık kalır ama beklenmedik değişiklikleri içeri alabilir. pip belgeleri bir aralık yazmayı da gösterir; örneğin alt ve üst sınırı birlikte belirtmek, bir bağımlılığın hangi sürümlerde çalıştığını açıkça kaydeder.
Uygulamada iki katmanlı bir düzen işe yarar. Doğrudan kullandığınız paketleri gevşek belirteçlerle, çalışan ortamın tamamını ise tam sürümlerle ayrı bir dosyada tutun. pip freeze çıktısı bu ikinci dosyanın başlangıcı olabilir, ancak belgelere göre freeze bir kilit dosyası üretmez; yalnız şu an kurulu olanı yazar.
Bir alt bağımlılığın sürümünü sınırlamak istiyor ama onu kendiniz kurdurmak istemiyorsanız kısıt dosyası kullanılır: python -m pip install -c constraints.txt -r requirements.txt. Belgelere göre kısıt dosyasında adı geçen paket, tek başına kurulumu tetiklemez; yalnız kurulacaksa hangi sürümün seçileceğini sınırlar. İki bağımlılık uyumsuz sürüm istiyorsa, doğru belirteci doğrudan gereksinim dosyasına eklemek çakışmayı çözmenin belgelenmiş yoludur.
Güncellemek ve kaldırmak
Kurulu bir paketi yükseltmek için --upgrade (kısaca -U) kullanılır:
python -m pip install --upgrade requests
Varsayılan strateji only-if-needed'dır: yalnız adı verilen paket yükseltilir, bağımlılıkları ancak gerekiyorsa güncellenir. Bağımlılıkların da yükseltilmesini istiyorsanız --upgrade-strategy eager seçeneği vardır; ancak bu seçenek çok paketi aynı anda değiştirir ve riskini artırır.
Güncellenmesi gerekenleri bulmak için pip list komutunun --outdated seçeneği, daha yeni sürümü olan paketleri ve en son sürümü gösteren ek sütunlarla listeler. Önce bu listeye bakıp tek tek, test ederek ilerlemek toplu yükseltmeden güvenlidir.
Kaldırmak için uninstall kullanılır:
python -m pip uninstall requests
Pip silmeden önce onay ister. -y bu onayı atlar; otomasyonda işe yarar. -r seçeneği ise bir gereksinim dosyasındaki tüm paketleri kaldırır. Kaldırdıktan sonra ortamın tutarlılığını pip check ile doğrulamak, başka bir paketin kaldırdığınız pakete ihtiyaç duyup duymadığını ortaya çıkarır.
Kurulu olanı incelemek: list, show, freeze, check
Dört komut ortamın durumunu farklı açılardan gösterir.
list, kurulu paketleri ve sürümlerini tablo olarak yazar. --format seçeneğiyle freeze ya da json biçimi de alabilirsiniz. show, bir ya da birkaç paketin ayrıntısını verir: ad, sürüm, özet, kurulduğu konum ve bağımlı olduğu paketler. freeze ise ad==sürüm satırları yazar ve çıktıyı bir dosyaya yönlendirerek gereksinim dosyası oluşturmanızı sağlar. Belgelere göre freeze, çıktıyı proje bağımlılıklarına odaklı tutmak için pip gibi kurulum araçlarını varsayılan olarak atlar; --all seçeneği bunları da ekler.
check ise sağlık denetimidir. Kurulu paketlerin bağımlılıklarının uyumlu olup olmadığına bakar. Uyum varsa 'No broken requirements found.' yazar ve sıfır çıkış kodu verir. Bir paket eksikse ya da sürümü uygun değilse sorunlu paketi adıyla belirtir ve sıfırdan farklı çıkış koduyla biter; bu sayede otomatik denetimlerde başarısızlık olarak yakalanır.
Üç komut aynı ortamı farklı amaçlarla gösterir
| pip list | pip show | pip freeze | |
|---|---|---|---|
| Ne gösterir | Kurulu tüm paketler | Seçilen paketin ayrıntıları | Kurulu paketler, sürümleriyle |
| Çıktı biçimi | Tablo; json de olur | Ad, sürüm, konum, bağımlılıklar | ad==sürüm satırları |
| Ne zaman kullanılır | Genel bakış, güncelleme araştırması | Paketin nereden geldiğini anlamak | Gereksinim dosyası oluşturmak |
| Sınırı | Sürüm koşulu üretmez | Başka paketin ihtiyacını ayrı sormaz | Kilit dosyası değildir |
Sık pip hataları ve çözümleri
pip hatalarının çoğu birkaç nedene dayanır.
Birincisi, sistem Python'una kurmaya çalışmaktır. Bazı işletim sistemleri Python kurulumunu kendi paket yöneticisiyle yönetir ve pip'in bu kurulumu değiştirmesini engellemek için bir işaret dosyası (EXTERNALLY-MANAGED) koyar. PEP 668'e göre bu durumda pip, sanal ortam dışında kuruluma izin vermez ve ortam oluşturmanızı önerir. Çözüm sanal ortamdır; işletim sisteminin yazılımı için dağıtımın kendi paket yöneticisi, bağımsız Python uygulamaları için pipx kullanılır. --break-system-packages bu korumayı aşar ama PEP 668 bunu riskli bir anahtar olarak tanımlar; sistem araçlarının bozulmasına yol açabilir.
İkincisi, yanlış yorumlayıcıya kurmaktır. Paket kuruldu görünür ama import hatası alırsınız; python -m pip biçimine geçmek bunu çözer.
Üçüncüsü, bağımlılık çakışmasıdır: iki paket aynı bağımlılığın uyumsuz sürümlerini ister. pip check çakışmayı adlandırır; çözüm gereksinim dosyasına doğru belirteci açıkça yazmaktır.
Dördüncüsü, izin hatalarıdır. Sistem klasörüne yazamıyorsanız sudo ile pip çalıştırmak yerine bir sanal ortam kurun; olmazsa --user belgelenmiş bir geçici yoldur.
Beşincisi, paket adını yanlış yazmaktır. Kurulum adı, import adından farklı olabilir; bulamıyorsanız pip show ile adı doğrulayın.
Hatanın belirtisi, ilk bakılacak yeri söyler
- Ortam dışarıdan yönetiliyor uyarısıSanal ortam ya da pipx--break-system-packages son çaredir ve risklidir.
- Paket kuruldu ama import edilemiyorpython -m pip ile yeniden kurKomutun hangi Python'a bağlı olduğunu doğrulayın.
- Uyumsuz bağımlılık uyarısıpip check, sonra belirteç ekleDoğru sürüm koşulunu gereksinim dosyasına yazın.
- Sistem klasörüne yazma izni yokSanal ortam; geçici olarak --userYönetici yetkisiyle pip çalıştırmayın.
Bu beceriyi Mindset programlarında nerede çalışırsınız
Python ile Programlama Eğitimi'nin Modüller ve Paketler konusu, kodun dış paketlerle genişletilmesini ele aldığı yerdir; pip komutlarını gerçek bir betikte denemek için uygun bir zemindir. Data Science Bootcamp'ın Modüller ve Paketler ile Veri Edinimi ve Çıkartma başlıkları, analiz ve veri toplama için paket kurmanın günlük iş olduğu bir akışa karşılık gelir.
İlgili Mindset programı
Python ile Programlama Eğitimi
Sık sorulan sorular
pip install ile python -m pip install arasındaki fark nedir?
İkisi aynı işi yapar ama hangi Python'a bağlandıkları farklıdır. python -m pip, komutu verdiğiniz yorumlayıcıyla çalıştırır; düz pip ise yolunuzdaki ilk pip'i bulur. Birden çok Python kuruluysa paket beklemediğiniz bir ortama gidebilir. Windows'ta eşdeğeri py -m pip biçimidir.
pip install --upgrade bağımlılıkları da günceller mi?
Varsayılan strateji only-if-needed olduğu için yalnız adını verdiğiniz paket yükseltilir; bağımlılıklar ancak yeni sürüm gerektiriyorsa güncellenir. Hepsini yükseltmek için --upgrade-strategy eager gerekir. Bu seçenek aynı anda çok paket değiştirdiğinden önce test ortamında denenmelidir.
pip freeze neden pip'in kendisini göstermiyor?
freeze, çıktıyı proje bağımlılıklarına odaklı tutmak için pip gibi kurulum araçlarını varsayılan olarak atlar. Bunları da görmek isterseniz --all seçeneğini verin. Ayrıca freeze bir kilit dosyası üretmez; yalnız şu an kurulu olanı yazar.
--break-system-packages kullanmalı mıyım?
Genellikle hayır. Bu seçenek, işletim sisteminin yönettiği Python kurulumuna pip ile müdahaleyi açar ve PEP 668 onu riskli bir anahtar olarak tanımlar. Sistem araçları aynı paketlere dayandığı için bozulma yaşanabilir. Sanal ortam ya da uygulamalar için pipx çok daha güvenli bir yoldur.
pip check ne zaman çalıştırılmalı?
Toplu bir kurulum ya da güncellemeden sonra ve derleme hattında bir adım olarak çalıştırın. Eksik ya da uyumsuz bağımlılık varsa sorunlu paketi belirtir ve sıfırdan farklı çıkış koduyla biter; böylece sorun üretim ortamına ulaşmadan yakalanır.