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

จะสร้างแพ็คเกจ python namespace ใน Python 3 ได้อย่างไร?


ใน Python แพ็คเกจเนมสเปซช่วยให้คุณกระจายโค้ด Python ในหลายโครงการ สิ่งนี้มีประโยชน์เมื่อคุณต้องการเผยแพร่ไลบรารีที่เกี่ยวข้องเป็นการดาวน์โหลดแยกต่างหาก ตัวอย่างเช่น ด้วยไดเร็กทอรี Package-1 และ Package-2 ใน PYTHONPATH

Package-1/namespace/__init__.py
Package-1/namespace/module1/__init__.py
Package-2/namespace/__init__.py
Package-2/namespace/module2/__init__.py
the end-user can import namespace.module1 and import namespace.module2.

บน Python 3.3 คุณไม่ต้องทำอะไรเลย เพียงแค่ไม่ใส่ __init__.py ลงในไดเร็กทอรีแพ็คเกจเนมสเปซของคุณและมันจะใช้งานได้ นี่เป็นเพราะ Python 3.3 แนะนำแพ็คเกจเนมสเปซโดยนัย

ในเวอร์ชันเก่า จะมีโมดูลมาตรฐานที่เรียกว่า pkgutil ซึ่งคุณสามารถ 'ผนวก' โมดูลกับเนมสเปซที่กำหนดได้ คุณควรใส่สองบรรทัดนั้นในแพ็คเกจทั้งสอง

1/namespace/__init__.py and Package-2/namespace/__init__.py:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

สิ่งนี้จะเพิ่มไปยังไดเร็กทอรีย่อยทั้งหมดของ __path__ ของแพ็คเกจบน sys.path ที่ตั้งชื่อตามแพ็คเกจ หลังจากนี้คุณสามารถแจกจ่าย 2 แพ็คเกจแยกกันได้