私はメモ帳の NppExec コンソールを使用して、python script_name.py
またはを使用して Python および Ruby スクリプトを実行してきましruby script_name.rb
たが、ほとんどの場合、これはうまく機能します。出力は NppExec コンソールにリダイレクトされ、スクリプトをテストするために Notepad++ から切り替える必要がありません。
しかし、私が本当にやりたいのは、NppExecコンソールからPythonまたはRubyの対話型セッションを実行することです。たとえば、単に許可するpython
か、irb
許可しないだけです。インタラクティブにコンソールで作業しています。
これで運が良かった人はいますか?
これが可能であれば、Notepad++ を離れることなく、コンソール内から特定のスクリプト内の関数/メソッドを実行できるようになります。
答え1
これは不可能のようです。NppExec のドキュメントから引用します:
NppExec は...ではありません。
NppExec はコンソール エミュレータではありません。NppExec は実行中のプロセスの出力をコンソール ウィンドウにリダイレクトし、コンソール ウィンドウの入力を実行中のプロセスにリダイレクトできます (いくつかの制限があります)。NppExec のコンソールは「実際の」コンソール ウィンドウではありません (実際には、テキストの入出力に RichEdit コントロールを使用します)。コンソール画面バッファーは提供されません。したがって、「実際の」コンソール画面バッファーを必要とするコンソール アプリケーションは、独自のコンソール ウィンドウで実行する必要があります (NPP_RUN コマンドを使用)。
NppExec はコマンド インタープリタではありません。NppExec は「実際の」コンソールでもコンソール エミュレータでもないため、「copy」、「call」、「for」などのコマンドを理解しません。ただし、NppExec には、「cls」、「cd」、「dir」、「echo」、「set」(「env_set」) などのコマンドの独自の内部実装があり、その他の特定のコマンドを導入しています。また、「cmd /c」を使用して、NppExec 内で任意の cmd のコマンドを実行することもできます。
NppExec はコンパイラではありません。NppExec では、外部ツールやコンパイラを使用して現在のファイルを処理/コンパイルできますが、単独でそれを行う機能はありません。ここには魔法はありません :)
コンソール画面バッファーがないため、NppExec コンソールは「実際の」コンソールとして認められません。
コードのインタラクティブなテスト用に設計されたアプリケーションを試す方がはるかに良いでしょう。Python のPython 用。
答え2
編集(パフォーマンス向上のため -u unbuffered スイッチを追加)
Pythonでは、-i
(inspect)スイッチと-u(バッファなし出力)スイッチを使うことで、これが可能であることが判明した。Npp_Execは真のコンソールではない:
python -u -i $(FULL_CURRENT_PATH)
これはPythonインタープリターのNpp_Execコンソールで現在のファイルを実行し、-i
スイッチにより対話モードに直接ジャンプして続行できます。NppExecコンソールからスクリプトによって提供される変数または定義を検査/使用します。
を使用して Npp_Exec コンソールを現在のディレクトリに従うように設定するとNotepad++ Menu > Plugins > NppExec > Follow $(CURRENT_DIRECTORY
、解決策はさらに簡単になります。
python -u -i $(FILE_NAME)
(注: Ruby の場合、これはまだ未解決の問題です。Ruby とその対話型インタープリタはirb
2 つの別々のバイナリであり、入力と出力の両方を持つスクリプトを実行するときに、inspect タイプ スイッチやその他の奇妙な点がないようです...)
答え3
私はPython初心者で、Pythonプログラミングを学ぼうとしましたが、IDLEに問題があったため(行番号など)、Notepad++を使うことにしました。もちろんNPP_EXECコードのコンパイルを容易にするプラグイン。コンパイルなどの他のいくつかの方法では成功しました*.vbsファイルですが、今回は Python の場合、ここでや他の場所で提示されたすべての解決策にもかかわらず、何らかの理由で成功しませんでした。
まず、NPP_EXEC で試しましたpython -u "$(FULL_CURRENT_PATH)"
。一部の Python スクリプトでは結果は満足のいくものでしたが、Python についてさらに学習を進めていくと、出力が期待どおりでなかったため、再び問題が発生しました。ここで [AKE] による解決策を見つけました。残念ながら、これまでのところ、どれもうまくいきませんでした。
次のコードを想定する。
#------------------------------------------------- my_dict = dict({'アリス':1, 'ジョン':2, 'エマ':3}) name = raw_input("名前を入力してください: ") 名前 = 名前.大文字化() my_dictに名前がある場合: #ここで何かする else: print("名前が存在しません!") #-------------------------------------------------
私は両方を使用しました:
python -u "$(FULL_CURRENT_PATH)"そして
python -u -i "$(FULL_CURRENT_PATH)"
ただし、結果は常に同じで、上記のコードで名前として何を入力しても、出力は常に次のようになります。
[その名前は存在しません!]
スイッチのせいだと思うので-u
、それを省略して-i
、
python -i "$(FULL_CURRENT_PATH)"
うまくいきましたが、今回は出力を確認した後、Ctrl+を押してCプロセスを手動で終了し、Pythonを終了する必要があります。相互の作用NPP_EXEC コンソールのモード。
Notepad++を使うなど、他の回避策もいくつか知っています走るメニューにいくつかのコマンドを追加したり、ピニオンプラグイン (ただし、これら 2 つは cmd で python をリダイレクトすることでほぼ同じ手順を実行します) ですが、どちらも私が望むような利便性はありませんでした。おそらく NPP_EXEC に期待しすぎているのでしょう。ヘルプに記載されているように、これは実際のコンソールではないからです。しかし、IDLE や cmd などの他のプロセスを処理せずに、すべてを Notepad++ で実行したかったのです。
それにもかかわらず、もし誰かが他の成功した経験を持っているなら、私はどんな助けでもありがたいです。