ฉันเพิ่งวิ่งเข้าไปในปัญหาเมื่อใช้pip's -Iธงว่าฉันอยากจะอยู่ที่ไหนสักแห่งเอกสาร:
-Iจะไม่ถอนการติดตั้งแพ็คเกจที่มีอยู่ก่อนดำเนินการต่อ มันเพิ่งจะติดตั้งที่ด้านบนของเก่า ซึ่งหมายความว่าไฟล์ใด ๆ ที่ควรลบระหว่างเวอร์ชันจะถูกแทนที่ด้วย สิ่งนี้อาจทำให้เกิดพฤติกรรมแปลก ๆ หากไฟล์เหล่านั้นใช้ชื่อร่วมกันกับโมดูลที่ติดตั้งอื่น ๆ
packageตัวอย่างเช่นสมมติว่ามีแพคเกจชื่อ ในตอนหนึ่งของpackages import datetimeไฟล์ที่พวกเขาใช้ ในตอนpackage@2.0.0นี้สิ่งนี้ชี้ไปที่datetimeโมดูลไลบรารีมาตรฐานแต่ในpackage@3.0.0พวกเขาเพิ่มโลคัลdatetime.pyเพื่อแทนที่ไลบรารีเวอร์ชันมาตรฐาน (ไม่ว่าด้วยเหตุผลใดก็ตาม)
ตอนนี้ให้บอกว่าฉันวิ่งpip install package==3.0.0แต่ต่อมาก็ตระหนักว่าฉันต้องการรุ่น2.0.0จริง ถ้าผมทำงานในขณะนี้pip install -I package==2.0.0, เก่าdatetime.pyไฟล์จะไม่ถูกลบออกเพื่อโทรใด ๆ ที่import datetimeจะนำเข้าโมดูลที่ไม่ถูกต้อง
ในกรณีของฉันสิ่งนี้แสดงออกมาพร้อมกับข้อผิดพลาดทางไวยากรณ์ที่แปลกประหลาดเนื่องจากแพ็คเกจรุ่นใหม่เพิ่มไฟล์ที่เข้ากันได้กับ Python 3 เท่านั้นและเมื่อฉันปรับลดรุ่นแพ็คเกจเพื่อรองรับ Python 2 ฉันยังคงนำเข้าโมดูล Python-3 เท่านั้น
จากนี้ฉันจะยืนยันว่าการถอนการติดตั้งแพคเกจเก่ามักจะดีกว่าที่จะใช้-Iเมื่อมีการปรับปรุงรุ่นแพคเกจที่ติดตั้ง
pip install MySQL_python==1.8.9