ฉันเพิ่งวิ่งเข้าไปในปัญหาเมื่อใช้pip
's -I
ธงว่าฉันอยากจะอยู่ที่ไหนสักแห่งเอกสาร:
-I
จะไม่ถอนการติดตั้งแพ็คเกจที่มีอยู่ก่อนดำเนินการต่อ มันเพิ่งจะติดตั้งที่ด้านบนของเก่า ซึ่งหมายความว่าไฟล์ใด ๆ ที่ควรลบระหว่างเวอร์ชันจะถูกแทนที่ด้วย สิ่งนี้อาจทำให้เกิดพฤติกรรมแปลก ๆ หากไฟล์เหล่านั้นใช้ชื่อร่วมกันกับโมดูลที่ติดตั้งอื่น ๆ
package
ตัวอย่างเช่นสมมติว่ามีแพคเกจชื่อ ในตอนหนึ่งของpackage
s 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