Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ติดตั้ง 2 โมดูล Python ชื่อเดียวกัน (ไม่ได้ปกติ)

ไม่สามารถทำได้ผ่าน pip โดยตรง เพราะ PyPI บังคับชื่อ Unique ทุกแพ็กเกจ

ปัญหา

  • Python ค้นหาใน sys.path ตามลำดับ หยุดที่เจอชื่อตรงก่อน
  • Dependency อื่นอาจพึ่งพาชื่อนี้ → Conflict

วิธีแก้ (Workaround)

1. เปลี่ยนชื่อโมดูลใน Source Code

Copy Code มาใส่ในโปรเจกต์เอง เปลี่ยนชื่อโฟลเดอร์/แพ็กเกจ แล้ว Import ใหม่

2. Import ด้วย Alias (กรณีอยู่ใน Package ต่างกัน)

>>> from foo import bar as first_bar
>>> from baz import bar as second_bar

3. ใช้ Namespace Package (หากควบคุม Source ได้)

แยกเป็น Sub-package ภายใน Namespace เดียวกัน (ดูบทความ Namespace Packages)

แนวทางปฏิบัติ: หลีกเลี่ยงชื่อชนกัน ตั้งชื่อ Package ให้ Unique ตั้งแต่แรก (เช่น mycompany-mymodule)