1

2 回読み込まれない可能性のあるパッケージ (Twisted) をインポートする小さな GTK python アプリケーションがあります。

python-mode.el を使用して emacs でアプリケーションを実行し、Cc Cc を押すと、アプリケーションは Python シェル ウィンドウで実行されます。ここでアプリケーションを閉じても、python シェルは稼働したままです。Cc Cc をもう一度押すと、emacs は古い python プロセスを「再利用」し、Twisted リアクターを 2 回インストールしているため、問題が発生します。

バッファを実行するたびに python-mode.el で新しいシェル ウィンドウを開くことは可能ですか?

4

2 に答える 2

2

python-mode.el にはコマンド py-execute-buffer-dedicated が付属しており、新しい予約済みプロセスを開きます

于 2012-07-22T17:32:31.097 に答える
1

では、変数が に設定されてpython.elいる場合、新しい下位プロセスが新しいバッファで起動されます。したがって、呼び出しのたびにその変数を にリセットするように関数にアドバイスすることができます。これにより、後続のコマンドごとに新しい Python プロセスが強制的に実行されます。次のようなものが機能するはずです。python-buffernilpython-send-buffernilpython-send-buffer

(defadvice
  python-send-buffer
  (after python-send-buffer-new-proc activate)
  (setq python-buffer nil))

(ad-activate python-send-buffer)

あなたの投稿が の助けを求めていたことは知っていますが、 が同様のメカニズムを使用していないpython-mode.el場合は驚いたので、とにかくこれについて言及することが役立つと思いました。python-mode.el時間があれば、調べてみようと思います。

編集:python-mode.elパッケージはコマンドを使用してpy-shell、新しい劣った Python プロセスを開始します。ユーザーが必要なことを実行しているように見えるアドホック機能を提供しているメーリング リストの投稿を見つけました。

ところで、 の既定の動作を変更しようとすることは、python-modeこの問題に対する最善の方法ではないことを考慮する価値があるかもしれません。あなたのコードが何をしているのかはわかりませんし、Twisted にも特に詳しくありませんが、同じセッション内でコードを 2 回目に評価するときに重大なエラーが発生することは、より根本的な設計上の問題の兆候である可能性があるようです。 . Pythonモジュールは一度しかロードされず、連続するステートメントは効果がないため(そのためには、明示的なorが必要です) 、複数importsの同じモジュールが問題になる可能性があることがわかりません。もし私がここで完全にオフベースであるなら、申し訳ありませんが、この可能性について言及する価値があるかもしれないと感じました.importreloadexecfile()

于 2012-06-18T17:53:29.233 に答える