16

必要なライブラリをパッケージ化して数日以内に PyPI にアップロードしようとしていますが、名前空間へのアプローチについて少し確信が持てません。

私は、同様のアプローチを持つ他の点では無関係なプロジェクトをいくつか持っており、それらにすべて同じ名前空間を与えたいと考えていました。例えば:

  • ライブラリ 1 の名前空間: abc.seo
  • ライブラリ 2 の名前空間: abc.ajax
  • ライブラリ 3 の名前空間: abc.ecommerce

問題は、2 つの別個のパッケージ (卵など) が同じ親名前空間と共存できるかどうかわからないことです。このアプローチは問題がありますか、それとも回避する方法はありますか? 最善のアプローチは何ですか?

ライブラリは一緒にパッケージ化されるべきではありません。それらはあまりにも無関係です。「公式」リリースを作成した後に名前空間の変更が面倒にならないように、アップロードの直前に取得したいと思います。

(NBabcは本名ではありません。質問に広告を掲載しないようにしたかったのです)

アップデート

setuptoolsがインストールされていない人に親切にするために、次のようにしました。

try:
    __import__('pkg_resources').declare_namespace(__name__)
except ImportError:
    __path__ = __import__('pkgutil').extend_path(__path__, __name__)

で次のようにしsetup.pyます。

setup(
    ...
    namespace_packages = ['rollyourown'],
    ...
4

1 に答える 1

16

各プロジェクト ベース ディレクトリで、次の構造を作成します。

/setup.py
/abc/__init__.py
/abc/seo/

/abc/__init__.py含む:

__import__('pkg_resources').declare_namespace(__name__)

setup.py含む:

setup(...,
    packages: ['abc', 'abc.seo'],
    namespace_packages = ['abc']
    ...
)

リファレンス ドキュメント:名前空間パッケージ

于 2011-02-21T11:24:11.407 に答える