6

独自の卵プラグインをダウンロードしてインストールするアプリを作成していますが、easy_install が卵を所定の位置に抽出した後、卵をロードする際に問題があります。これが今の仕組みです:

  • アプリは卵を一時フォルダーにダウンロードします
  • setuptools.command.easy_install.main() を使用して Egg を ~/.app/plugins フォルダー (dist-packages の pth が指すフォルダー) にインストールします。
  • この時点で、~/.apps/plugins/easy-install.pth が新しい Egg パスで更新されます

問題は、python プロセスが再起動されるまで pth がリロードされないことです。つまり、アプリを停止して再起動する必要があります (アプリは長時間実行されるプロセスであり、プラグインのインストールには再起動が必要ではありません)。

したがって、問題は、プラグインのエントリポイント検出が新しい卵に対して機能するようにプログラムで pth をリロードする方法、または何らかの方法で easy_install に卵をインストールしたパスを返すようにして、手動で (pkg_resources を使用して) 新しいプラグインをロードする方法です。 ?

easy_install されたパスを推測したり、自分で pth を解析したりする関数を作成することもできますが、できればそうしたくないのです。

Python 2.6、セットアップツール 0.6c9


Marius Gedminasのおかげで、私が今やっていることは基本的に次のとおりです。

dist = pkg_resources.get_distribution(plugin_name)
entry = dist.get_entry_info(entry_point_name, plugin_name)
plugin = entry.load()
4

1 に答える 1

5

ドキュメントを閲覧した後、あなたがする必要があるのは

pkg_resources.get_distribution(name).activate()

ここで、nameは、インストールしたばかりのパッケージの名前です。

于 2010-07-14T18:20:58.007 に答える