1

ここでは Python の初心者なので、この質問に簡単な答えがあれば申し訳ありません。(そうなることを願っています。)

私は python モジュール (より大きなプログラム用のプラグイン) に取り組んでいます。Eclipse IDE (pydev を使用) を使用してモジュールを開発しようとしています。つまり、このモジュールをスタンドアロンで実行できるようにする必要があります。つまり、より大きなプログラムのプラグインとしてではありません。

私は実際に、これに関する毛むくじゃらの詳細の多くを自分で整理しました。その多くは、IDE からプラグインを起動する一種の「ハーネス」を作成することを含み、(プラグインの観点から)実際の動作環境内。

しかし、1つのことが私を逃します。モジュールが「実際の」環境内から実行されると、その dir() の結果ですでに定義されている特定の名前 (「Bob」と呼びます) が何らかの形で持ちます。自分の環境で実行すると、手動でロードしない限り、dir() に "Bob" が表示されません。

当然のことながら、IDE でプラグインが動作するように手動で "Bob" をロードするコードを書いた場合、プラグインが "実際に" 実行されているときに干渉します。助けが必要なのは 、「Bob」が既にロードされている状態でプラグインを (起動ハーネスを介して) 起動するにはどうすればよいですか?

単純に、プラグイン自体に「ボブのインポート」を実際に追加することなく、プラグインに「ボブ」をインポートするように「強制」できることを望んでいます。しかし、私はより良い方法についての提案を受け入れています...?

4

1 に答える 1

2

おそらく、Eclipse で「スタンドアロン」(または Eclipse なしで「スタンドアロン」、さらに言えば、シェル プロンプトで「python foobar.py」と同じように) を実行すると、モジュールの__name__グローバル変数の値は'__main__'(代わりに、モジュールがインポートされる場合、そのグローバル変数の値は'foobar'-- またはモジュールの名前になります)。

だから、ただやってください

if __name__ == '__main__':
    import Bob

また、モジュールがスタンドアロンで実行されているときに Bob をインポートすることができ、モジュールが代わりにimported を取得しても悪影響はありません。

于 2010-01-18T01:15:44.003 に答える