Pip ile belirli paket sürümlerini kurma


1313

--no-site-packagesSeçeneği ile oluşturulan yeni bir virtualenv kullanarak, MySQL_python bağdaştırıcısının 1.2.2 sürümünü yüklemeye çalışıyorum . PyPi gösterilen güncel sürümü olan 1.2.3 . Eski sürümü kurmanın bir yolu var mı? Bunun yapılması gerektiğini belirten bir makale buldum:

pip install MySQL_python==1.2.2

Ancak, yüklendiğinde MySQL_python-1.2.3-py2.6.egg-infosite paketlerinde hala gösterilir . Bu, bu pakete özgü bir sorun mu yoksa yanlış bir şey mi yapıyorum?


17
İpucu için teşekkürler, bu benim için openpyxl eski bir sürümünü yüklemek için çalıştıpip install MySQL_python==1.8.9
tim

4
Evet, bu da pandalar için çalıştı, teşekkürler:pip install -Iv pandas==0.12.0
tandy

1
benim için de çalıştı: pip install xvfbwrapper == 0.2.4
amitdatta

Yanıtlar:


895

TL; DR:

  • pip install -Iv(yani pip install -Iv MySQL_python==1.2.2)

İlk olarak, yapmaya çalıştığınız şeyle ilgili iki sorun görüyorum. Yüklü bir sürümünüz olduğundan, mevcut sürücüyü kaldırmanız veyapip install -I MySQL_python==1.2.2

Ancak, yakında bunun işe yaramadığını öğreneceksiniz. pip install -Iv MySQL_python==1.2.2Pip'in kurulum günlüğüne bakarsanız veya yaparsanız , PyPI URL bağlantısının MySQL_python v1.2.2 için çalışmadığını görürsünüz. Bunu buradan doğrulayabilirsiniz: http://pypi.python.org/pypi/MySQL-python/1.2.2

404'lü indirme bağlantısı ve yedek URL bağlantıları, sourceforge.net'in son yükseltmesi ve PyPI'nin eski URL'si nedeniyle sınırsız olarak yeniden yönlendiriliyor.

Sürücüyü düzgün bir şekilde kurmak için aşağıdaki adımları uygulayabilirsiniz:

pip uninstall MySQL_python
pip install -Iv http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz/download

1
Yine de birden fazla sürüme sahip olmayla ilgili bir sorun olmamalı, bu her sürüm için yeni klasörler oluşturma ve .pth dosyalarını kullanma noktasıdır.
Jochen Ritzel

3
Bu doğru sürümü yükler, bu sorunun cevabı da öyle - yardımınız için teşekkürler. Şimdi farklı bir sorunu vurmak: "hata: '/usr/bin/gcc-4.2' komutu '_mysql' uzantısı oluşturulurken çıkış durumu 1 ile başarısız oldu. GCC'm olduğunu biliyorum ve MySQL_python 1.2.3 için kurulum sorunsuz gidiyor. Başkaları özellikle 1.2.2 ile bu sorunu gördü mü?
Joe

Lütfen başka bir soru sorun ve pip'ten aldığınız hata mesajını gönderin.
Mahmoud Abdelkader

2
Tabii - işte bağlantı: stackoverflow.com/questions/5226945/…
Joe

4
Mevcut kurulumu kaldırmış olsaydık neden -I seçeneğini kullandığınızı merak ettiniz - bu konuda biraz ayrıntı verebilir misiniz?
Joe

509

Komutla bir sürüm aralığı bile kullanabilirsiniz pip install. Bunun gibi bir şey:

pip install 'stevedore>=1.3.0,<1.4.0'

Ve paket zaten yüklüyse ve eski sürüme geçirmek istiyorsanız şu şekilde ekleyin --force-reinstall:

pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall

129
örneğin: $ pip install 'xkcdpass==1.2.5' --force-reinstall
jschank

1
mükemmel! Ubunto 15.04'te çalıştı ve mevcut bir kütüphaneyi belirtilen sürümle değiştirdi (otomatik olarak). Tüm sorunlarımı çözdüm!
zevij

2
Sadece Python 2 için 'yerine' çift tırnak kullanmak zorunda olduğunu
söyleyeceğim

6
@ HandofC'thuhlu ben python 2 değil, pencereler için çift tırnak kullanmak zorunda düşünüyorum
SmartManoj

3
Windows'ta çift tırnak kullanın: pip install "stevedore> = 1.3.0, <1.4.0"
jmng

139

Bu yayında önerildiği gibi, bir yol sürümü şu şekilde belirtmektir pip:

pip install -Iv MySQL_python==1.2.2

yani Kullanım == , yalnızca o sürümü kurmak için sürüm numarasını ve belirtin. -I, --ignore-installedkurulu paketleri yok sayar.


1
Dikkat! Bunun farklı sürümleri yan yana yüklediği deneyimim oldu ! Ayrıca ilginç bir şekilde, pip listbunun farkında değildi, ama conda list(ve farklı paket sürümlerini gösterecekti). Ayrıca Pycharm'ı tamamen karıştırdı .
Lionel Trebuchon

66

Belirli bir python paketi sürümünü ilk kez, yükseltme veya eski sürüme geçirme olarak yüklemek için:

pip install --force-reinstall MySQL_python==1.2.4

MySQL_python sürüm 1.2.2 mevcut değil, bu yüzden farklı bir sürüm kullandım. Bir dizindeki tüm kullanılabilir paket sürümlerini görüntülemek için sürümü hariç tutun:

pip install MySQL_python==

4
10.0.1 pip ile bu tek çalışan çözümdür. "-I" seçeneği aslında önceki sürümü yeniden yükler.
FedFranzoni

38

Zaten kurulu bir paketiniz varsa, pip'in başka bir sürümle üzerine yazmayacağına inanıyorum. -IÖnceki sürümleri yoksaymak için kullanın .


1
Yüklü değilim - --no-site-Packages seçeneğiyle oluşturulmuş yeni bir virtualenv kullanarak
Joe

2
tamam, bu yüzden 1.2.2 sürümünü istersiniz ve hala 1.2.3'ü yükler ve başka bir şey yüklenmez? Kullandığınız sözdizimi belirli sürümleri almak için doğrudur.
dappawit

"--no-site-Packages seçeneğiyle oluşturulan yeni bir virtualenv kullanarak"; önceden yüklenmiş kütüphanelerinizi görmekten unset PYTHONPATHpip
kaçınmak

17

Bazen, önceden yüklenmiş sürüm önbelleğe alınır.

~$ pip install pillow==5.2.0

Aşağıdakileri döndürür:
Gereksinim zaten karşılandı: /home/ubuntu/anaconda3/lib/python3.6/site-packages içinde yastık == 5.2.0 (5.2.0)

Bunun üzerine yazmak için -no-cache-dir komutunu -I ile birlikte kullanabiliriz

~$ pip install --no-cache-dir -I pillow==5.2.0

5

Bu, pip'in 10. sürümünde tanıtılan bir kırılma değişikliği olduğu için uyumlu bir sürüme geçtim:

pip install 'pip<10' 

Bu komut, pip'e modülün sürüm 10'dan daha düşük bir sürümünü yüklemesini söyler. Bunu virutalenv'de yapın, böylece Python sitenizin kurulumunu bozmazsınız .


5

Son zamanlarda pip's kullanırken bir sorunla karşılaştı-I ı belge yerde istediğini bayrağı:

-Iwill not devam etmeden önce varolan paketi kaldırmak; sadece eskisinin üzerine kuracaktır. Bu, sürümler arasında silinmesi gereken dosyaların yerinde bırakılacağı anlamına gelir. Bu dosyalar diğer yüklü modüllerle adları paylaşırsa, garip davranışlara neden olabilir.

Örneğin, adında bir paket olduğunu varsayalım package. packageS dosyalarından birinde kullanırlar import datetime. Şimdi, package@2.0.0bu standart kütüphane datetimemodülüne işaret ediyor , ancak standart kütüphane sürümünün yerine package@3.0.0bir yerel datetime.pyolarak eklediler (herhangi bir nedenle).

Şimdi koştuğumu söyleyelim pip install package==3.0.0, ama daha sonra aslında sürümü istediğimi fark ettim 2.0.0. Şimdi çalıştırırsam pip install -I package==2.0.0, eski datetime.pydosya kaldırılmaz, bu nedenle yapılacak çağrılar import datetimeyanlış modülü içe aktarır.

Benim durumumda, bu paketin daha yeni sürümü yalnızca Python 3 ile uyumlu bir dosya eklediğinden ve Python 2'yi desteklemek için paket sürümlerini düşürdüğümde garip sözdizimi hatalarıyla ortaya çıktı, yalnızca Python-3 modülünü içe aktarmaya devam ettim.

Buna dayanarak, -Iyüklü paket sürümlerini güncellerken eski paketin kaldırılmasının her zaman tercih edildiğini iddia ediyorum .


3

Aşağıdaki komut benim için çalıştı

Python sürümü - 2.7

paket - python-jenkins

komut - $ pip install 'python-jenkins>=1.1.1'


Sevgili downvoter, Lütfen bu cevabın neden reddedildiğini gerekçelendirin?
Tapan Hegde

Oy vermedim, ancak bunun soruyu cevaplamadığını veya OP'nin sorunu çözmek için kullanabileceği herhangi bir yararlı bilgi sağlamadığını görebiliyorum.
TheAmigo

0

Sürümü olan herhangi bir paketi kurmanın 2 yolu vardır: - A). pip install -Iv paket-adı == sürüm B). pip install -v package-name == sürüm

A için

Burada, yükleme sırasında -I seçeneğini kullanıyorsanız (paketin zaten kurulu olup olmadığını bilmiyorsanız) ('pip install -Iv pyreadline == 2. *' veya başka bir şey gibi), yeni bir bazı farklı sürümleri olan aynı pakete sahip ayrı bir paket.

B için

  1. İlk başta, kırık gereksinim olup olmadığını kontrol etmek isteyebilirsiniz. pip kontrolü

2. ve sonra pip listesi tarafından nelerin yüklendiğine bakın

3. paketlerin listesi belirli bir sürümle yüklemek istediğiniz herhangi bir paket içeriyorsa, daha iyi seçenek önce bu sürümün paketini kaldırmaktır. pip uninstall package-name

4.Ve şimdi, pip install -v package-name == version örn. Pip install -v pyreadline == 2. * ile aynı paketi belirli bir sürümle yeniden yüklemeye devam edebilirsiniz . *


0

En son sürüme güncellemek istiyorsanız ve en son sürümün ne olduğunu bilmiyorsanız yazabilirsiniz.

pip install MySQL_python - yükseltme

Bu, mevcut en son sürüm için MySQL_python'u güncelleyecektir, diğer herhangi bir paket sürümü için kullanabilirsiniz.

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.