10

gobject イントロスペクションを通じて、いくつかの C ライブラリに依存する Python アプリケーションをパッケージ化しています。少なくとも、glib の python モジュールがインストールされていることを確認したいと思います (つまり、Debian で python-gi としてパッケージ化された gi モジュールです。非推奨の PyGObject モジュールについて話しているわけではありません)。通常の依存関係として追加すると、Pypi にないため、インストールが失敗します。

これをどのように宣言すればよいですか?私はsetuptool docを見ましたが、何もうまくいきません。

ありがとう。

関連する質問:

4

1 に答える 1

3

setuptools(AFAIK、つまり...)を使用してPython以外の依存関係を指定することはできません。

install_requiresキーワード toは、setuptools.setupPython スタイルの依存関係のみを指定できます。これは、Python パッケージ インフラストラクチャを対象としています。Python スタイルのインストーラー プログラム ( pipeasy_installまたはpython setup.py installのいずれか) は、Python スタイルのパッケージのみを見つけて解決する戦略を使用して、そのような依存関係を解決します。それらの戦略の 1 つは、PyPI のようなパッケージ インデックスを使用することです。

Debian パッケージ リポジトリを使用して、Debian スタイルのインストーラーによって解決される Debian スタイルの依存関係を持つパッケージを作成する場合は、Debian パッケージを作成する必要があります。easydebstdebなど、Python プロジェクトからの Debian パッケージの作成をサポートするツールがあります。ただし、ほとんどの人は、さらに一歩進んで明示的に Debian パッケージを作成することを推奨しています。

一般的なケースでは、PyPI を介して Python プロジェクトをパッケージ化して配布する方法を使用する必要があります。プラットフォームやディストリビューションに依存せず、pipなどの Python 固有のインストーラーやvirtualenvbuildoutなどのツールとうまく連携します。PyGI への依存関係を持つには、たとえばpydbus パッケージが README で行っているように、その事実をユーザーに文書化する必要があります。

これは、Python から GLib を使用するための推奨される方法である、Python GObject Introspection バインディングである PyGI に基づいています。残念ながら、PyGI は pypi にパッケージ化されていないため、ディストリビューションのリポジトリ (通常は python-gi、python-gobject、または pygobject3 と呼ばれます) からインストールする必要があります。

プロジェクトは、PyGI からインポートするときに防御的である可能性もあり、インポートが失敗すると、ユーザーに「please sudo apt-get install python-gi」などのわかりやすいエラー メッセージが表示されます。

于 2015-03-16T22:15:27.130 に答える