Son zamanlarda pip
's kullanırken bir sorunla karşılaştı-I
ı belge yerde istediğini bayrağı:
-I
will 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
. package
S dosyalarından birinde kullanırlar import datetime
. Şimdi, package@2.0.0
bu standart kütüphane datetime
modülüne işaret ediyor , ancak standart kütüphane sürümünün yerine package@3.0.0
bir yerel datetime.py
olarak 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.py
dosya kaldırılmaz, bu nedenle yapılacak çağrılar import datetime
yanlış 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, -I
yüklü paket sürümlerini güncellerken eski paketin kaldırılmasının her zaman tercih edildiğini iddia ediyorum .
pip install MySQL_python==1.8.9