Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách tạo Python namespace packages trong Python 3?


Python namespace package cho phép phân tán code Python giữa nhiều project. Hữu ích release thư viện liên quan download riêng. Ví dụ Package-1 và Package-2 trong PYTHONPATH:

Package-1/namespace/__init__.py
Package-1/namespace/module1/__init__.py
Package-2/namespace/__init__.py
Package-2/namespace/module2/__init__.py
# end-user import namespace.module1 và namespace.module2

Python 3.3+: không làm gì, chỉ không đặt __init__.py trong namespace package directories, tự động work. Python 3.3 giới thiệu implicit namespace packages.

Phiên bản cũ, module chuẩn pkgutil cho phép 'append' module vào namespace. Đặt 2 dòng trong cả hai Package:

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

Thêm vào __path__ package tất cả subdirectory của directories trên sys.path tên theo package. Sau đó distribute 2 package riêng biệt.