Saya baru-baru berlari ke masalah ketika menggunakan pip
's -I
bendera yang saya ingin suatu tempat dokumen:
-I
tidak akan menghapus paket yang ada sebelum melanjutkan; itu hanya akan menginstalnya di atas yang lama. Ini berarti bahwa semua file yang harus dihapus antar versi akan dibiarkan di tempatnya. Ini dapat menyebabkan perilaku aneh jika file-file tersebut berbagi nama dengan modul lain yang diinstal.
Sebagai contoh, katakanlah ada paket bernama package
. Dalam salah satu package
file, mereka gunakan import datetime
. Sekarang, dalam package@2.0.0
, ini menunjuk ke datetime
modul perpustakaan standar , tetapi dalam package@3.0.0
, mereka menambahkan lokal datetime.py
sebagai pengganti untuk versi perpustakaan standar (untuk alasan apa pun).
Sekarang katakanlah saya menjalankan pip install package==3.0.0
, tetapi kemudian menyadari bahwa saya benar-benar menginginkan versi 2.0.0
. Jika sekarang saya jalankan pip install -I package==2.0.0
, file lama datetime.py
tidak akan dihapus, jadi panggilan apa pun untuk import datetime
akan mengimpor modul yang salah.
Dalam kasus saya, ini dimanifestasikan dengan kesalahan sintaksis aneh karena versi yang lebih baru dari paket menambahkan file yang hanya kompatibel dengan Python 3, dan ketika saya menurunkan versi paket untuk mendukung Python 2, saya terus mengimpor modul hanya Python-3.
Berdasarkan ini, saya berpendapat bahwa menghapus paket lama selalu lebih baik daripada menggunakan -I
ketika memperbarui versi paket yang diinstal.
pip install MySQL_python==1.8.9