Pip ve gereksinimler dosyasını kullanarak belirli paketleri nasıl yükseltebilirim?


437

Django projelerim için bir sanal dosyada bir gereksinimleri dosyasıyla pip kullanıyorum. Bazı paketleri, özellikle Django kendisini yükseltmeye çalışıyorum ve kaynak kod çakışmaları hakkında bir hata alıyorum:

Source in `<virtualenv`>/build/Django has version 1.2.3 that conflicts with Django==1.2.4 (from -r requirements/apps.txt (line 3))

Gereksinimler dosyamda Django'nun sürüm numarasını 1.2.3'ten 1.2.4'e güncelledikten sonra. Aslında yükseltme yapmak için bu komutu kullanıyorum:

pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>

Toplam paketin yeniden indirilmesini tetikleyen hiçbir bayrak bulamıyorum. Hatta önce bir kaldırma komutunu çalıştırmayı denedim, sonra yükle ama zar yok. Belki bir şey eksik?


1
Lütfen @ dr-jimbob'un cevabını kontrol edin, çünkü pip'in son sürümleri yükseltmekte olduğunuz paketin bağlı olduğu diğer tüm bağımlılıkları yükseltir.
Lokesh Meher

Yanıtlar:


61

Sorunun tam olarak olduğundan emin değilim, ancak benim durumumda, Django'yu 1.2.4'e yükseltemedim - her zaman 1.2.3 sürümü ile bitiriyordum, bu yüzden Django'yu kaldırdım:

<virtualenv>/bin/pip uninstall Django

Sonra <virtualenv>/build/Djangodizini kaldırdım ve sonunda uygun sürümü yükledim:

<virtualenv>/bin/pip install Django

Umarım bu yardımcı olur.


53
Bu en iyi uygulama değil. @JoeyG'nin cevabında açıklandığı gibi pip install Django -Uveya kullanın pip install Django --upgrade.
Ahmad

@Ahmad katılıyorum. Pip ve virtual env'de sorunsuz bir güncelleme süreci olmalı.
Parth Joshi

1274

Aşağıdaki komutu çalıştırdım ve 1.2.3'ten 1.4.0'a yükseltildi

pip install Django --upgrade

Yükseltme kısayolu:

pip install Django -U

Not : Yükseltmekte olduğunuz paketin herhangi bir gereksinimi varsa, bu komut ek olarak tüm gereksinimleri mevcut en son sürümlere yükseltir. Pip'in son sürümlerinde, bu davranışı belirterek engelleyebilirsiniz--upgrade-strategy only-if-needed . Bu bayrakla, bağımlı paketlerin yüklü sürümleri artık yükseltilmiş paketin gereksinimlerini karşılamadığı sürece bağımlılıklar yükseltilmez.


7
Bu benim için tüm paketlenmiş ve tamamen her şeyi berbat !!!! Belgelerin durumu: - tüm paketleri kullanılabilir en yeni sürüme yükseltin. Bu doğru mu yoksa yanlış bir şey mi yaptım?
Prometheus

4
@OrbiterFleet Ben yaptım pip install Requests --upgradeve sadece "istekleri" yükseltildi "istekleri" güncelleştirmek için gerekli. Dokümanları görüntülediğimde açıklamada " belirtilen tüm paketleri yükselt" yazıyor .
harperville

31
DİKKAT, tüm bağımlılıkları da günceller ve her şeyle uğraşabilir. en iyi seçenek paketi kaldırıp yeniden yüklemektir.
marcelosalloum

3
paket kullanımını yükseltmek içinpip install --upgrade django==1.4.0
whale_steward

bu soruya göre doğru cevap olmalı ya da sorunun kendisi yanlış olmalıdır.
int Soumen

51

pip dokümanlarına göre örnek 3

pip install --upgrade django

ancak tecrübelerime dayanarak, bu yöntemi kullanmak onunla ilgili herhangi bir paketi de yükseltir. misal:

Yükseltmek istediğiniz varsayalım somepackagegerektiren django >= 1.2.4aynı zamanda yükseltir yöntemin bu tür kullanarak somepackageVE djangoson değişikliklere. Sadece güvenli olmak için:

# assume you want to keep django 1.2.4
pip install --upgrade somepackage django==1.2.4

Bunu yapmak somepackagedjango'yu 1.2.4 sürümüne yükseltecek ve tutacak


İyi yakalayın, ancak djangoana paket olarak kullanmaya başladıktan somepackagesonra kullandığınız örnekte ve sonra djangobağımlılık olarak kullandığınız için açıklamanız kafa karıştırıcıdır .
Uzun

34

Kısayol komutu --upgrade:

pip install Django --upgrade

Dır-dir:

pip install Django -U

7
(Eksik) bir cevap yerine bu bilgiyi biraz eklemek için mevcut cevabı düzenlemeye ne dersiniz?
a1an

@ a1an lütfen "önerilen düzenleme" ye hangi ek bilgilerin ekleneceğini düşündüğünüzü belirtin. Teşekkürler
Aaron Lelevier

4
Yani JoeyG tarafından verilen cevabı düzenleyebilir ve orada bağlam içinde sağladığınız kısayol seçeneğini ekleyebilirsiniz.
a1an

17

Bir paketi yükseltirseniz eski paket kaldırılır.

Bunu yapmanın kolay bir yolu , seçilen paketler (veya tüm paketler) için dosyanızdaki sürümleri de güncelleyen bu pip yükselticiyi kullanmaktır requirements.txt.

Kurulum

pip install pip-upgrader

kullanım

Virtualenv'inizi etkinleştirin (önemli, çünkü mevcut virtualenv'e yükseltilen paketlerin yeni sürümlerini de yükleyecektir).

cd proje dizininize ekleyin ve çalıştırın:

pip-upgrade

Gelişmiş kullanım

Gereksinimler standart olmayan bir konuma yerleştirilirse, bunları bağımsız değişken olarak gönderin:

pip-upgrade path/to/requirements.txt

Hangi paketi yükseltmek istediğinizi zaten biliyorsanız, bunları bağımsız değişken olarak gönderin:

pip-upgrade -p django -p celery -p dateutil

Sürüm öncesi / sürüm sonrası sürüme yükseltmeniz gerekiyorsa --prerelease, komutunuza argüman ekleyin .

Tam açıklama: Bu paketi yazdım. Umarım yardımcı olur.


1
bu yaklaşımı kullanarak tüm paketleri bir kerede (yani listelemeden) yükseltme seçeneği var mı?
Bjorks bir numaralı fan

1
@MikePalmice evet: pip-upgrade -p alltüm paketlerinizi yükseltir ve sizden herhangi bir girdiye ihtiyaç duymadan gereksinimler dosyasını günceller.
Simion Agavriloaei

15

Sadece denilen belirli bir paketi yükseltmek istiyorsanız somepackage, pip'in son sürümlerinde kullanmanız gereken komut

pip install --upgrade --upgrade-strategy only-if-needed somepackage

Bu, django'da şu anda yalnızca belirli bir django sürümüyle çalışacak (Django = 1.9.x diyelim) bir uygulama geliştirdiğinizde ve bazı bağımlı paketi bir hata düzeltme / yeni özellik ile yükseltmek istediğinizde ve yükseltilen paketin django'da (ancak 1.5'ten sonra django'nun herhangi bir sürümü ile çalışır). Varsayılan davranışı, pip install --upgrade django-some-packagedjango'yu uygulamanızın bozulmasına neden olabilecek en son sürüme yükseltmek olacaktır, ancak --upgrade-strategy only-if-neededbağımlı paketler artık sadece gerektiği gibi yükseltilecektir.


4

Normalde pip kendinden sonra temizlenir ve derleme dizininin içeriğini kaldırır. Bunu yapmadığı tek zaman:

  1. --no-installSeçeneği kullandın
  2. Düzenlenebilir paketler kullanıyorsunuz
  3. Kurulum iptal edildi veya başka şekilde kesintiye uğradı.

Diğer tüm durumlarda, buildortamınızı tıkayan bir dizininiz olmamalıdır .


1

Yükseltme için belirli bir sürüm tanımlamak, yalnızca yükseltme komutu yerine bana yardımcı oldu.

pip3 install larapy-installer==0.4.01 -U

0

benim için "pip install -I --upgrade psutil --force" sorununu çözdü, daha sonra sadece yeni sürümle psutil'i kaldırın ve aniden eski sürümü yükleyebilirsiniz (:


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.