2

場合によっては、それぞれが共通の API を実装するさまざまなモジュールがあります (私の場合、古い pure-python elementtreecElementTreelxml.etreeおよび built-in xml.etree)。これらの各オプションを試すために使用してモジュールを作成ElementTreeし、自分の好みの順序に従って存在する最初のオプションを取得できますが、setup.py. 次のようなものを書きたいと思います。

setup(
    ...,
    install_requires="""
        elementtree | cElementTree | lxml
    """,
    ...
)

これ、またはそのようなことは可能ですか?

4

2 に答える 2

0

setup.py で次のようなことを試してみてください:

install_requires = ["elementree"]

try:
    import cElementTree
    install_requires = []
except ImportError:
    try:
        import lxml
        install_requires = []
    except ImportError:
        # etc for remaining equivalent modules

setup(
    install_requires = install_requires,
    # rest of setup parameters
)

同等のものがインストールされていない場合、これは基本的に elementree パッケージを依存関係としてインストールします。

于 2010-01-08T00:53:08.857 に答える
0

私はそうは思いませんがelementtree、標準の Python ライブラリの一部である比較的最近の Python を使用している場合、それが存在しないのではないかと心配するのはなぜですか? (これは、API のいくつかの可能な実装の他のケースでは問題になることを理解しています。特定のユースケースで本当に必要かどうか疑問に思います)。

于 2010-01-08T00:20:56.053 に答える