JSLからPythonスクリプトを実行するJSL コードから Python スクリプトを実行したいと考えています。 そのための最良の方法は何でしょうか? ありがとう
Re: JSL から Python スクリプトを実行する更新: JMP 14.0 (および 15.0 では大幅に改善) 以降、JSL から Python を実行する最良の方法は、Python Init()、Python Submit() などのコマンドに実装された JMP インターフェイスを使用することになりました。
詳細はこちら:
https://www.jmp.com/support/help/14-2/python-integration-functions.shtml
Anaconda 仮想環境の実行をサポートするラッパーについては、以下を確認してください。
https://community.jmp.com/t5/JMP-Scripts/Anaconda-Environments-Integration/ta-p/221565
Re: JSL から Python スクリプトを実行するx = RunProgram(
executable( "/path/anaconda/bin/python" ),
options( "/path/filename.py" ),
readfunction( "blob" )
);
次に、その逆を行うには、Python スクリプトから JSL を実行します。これは Mac、JMP 13.2 で動作します (これは JSL ではなく Python です)。
import os<BR />
os.system('open /Applications/JMP\ Pro\ 13.app/Contents/MacOS/JMP /path/script.jsl')
open 引数には、アプリケーション パス、スペース 1 つ、その後に開くパス/ファイルが含まれます。
おそらく重要なのは、
//!
スクリプトの最初の行に追加すると、自動的に実行されます。 そして最後の行にこれを含めます
Quit();
これにより、os.sytem が開始した JMP のインスタンスが閉じられます。
Re: JSL から Python スクリプトを実行するOracle 11 用の Oracle 64 ビット ODBC ドライバーを使用して、Oracle v12 データベースと通信しています。 あなたの言うような行為は見たことがありません。 JMP 11 と 12 でこれを使用しました。 まだ JMP 13 に完全に移行していません。 v13.1.0 では、V13.0 で CLOB を読み取れないバグが修正されました。
ところで、Microsoft から Oracle ODBC ドライバーを動作させることはできませんでした。
幸運を!
Re: JSL から Python スクリプトを実行する現在 ODBC ドライバーを使用していますが、信頼性がありません。 それが JMP ではないとは思いますが、JMP 12 ~ 13 および oracle 11 ~ 12 から切り替えると、applecart が間違いなく混乱します。 確実に実行するには、約 5 クエリごとにデータベース接続を閉じて再度開く必要があることはわかっています。
Re: JSL から Python スクリプトを実行するODBC ドライバーを使用して JMP にデータを直接読み取る方が簡単で高速な場合があります。 SQL データベースは何ですか? 私は Oracle に関して豊富な経験があるので、それについてお手伝いできると思います。
Re: JSL から Python スクリプトを実行する使用
txt = runprogram( ... readfunction("text"));
Python プログラムが標準出力 (print ステートメントなど) を生成すると、runProgram の結果として JSL に返されます。 JSL は、Python プログラムが終了するまで続行されません。 readfunction("テキスト") 。 次のようなものを印刷したいかもしれません
ファイル名.dat,100
そのため、JSL はそのファイルに 100 行のデータがあることを認識できます。 または、データベースが使用できない場合は、エラー メッセージを出力して処理します。
(JSL には、より適切な SQL 機能もいくつかあります。 @Eric_Hill )
Re: JSL から Python スクリプトを実行するクレイグ
速やかなご返信ありがとうございます。 私がやろうとしているのは、
Python プログラムを実行し、Python プログラムが終了するまで JSL の実行を一時停止します。
終了します。 Python プログラムは出力をファイルに書き込みます。
次に、JSL 経由で開いて取得します。 私は基本的にPythonを使用しようとしています
JSL コードで使用するためにデータベースからデータを取得します。 シーケンスは次のとおりです。
なれ:
1. JSL を実行して SQL クエリを準備すると、これがまとめられて
Pythonスクリプトを作成します。
2. Python プログラムを実行し、JSL を一時停止します。
3. Python が完了すると、JSL は続行し、ファイルを開きます
Python が保存して処理しています。
Re: JSL から Python スクリプトを実行するreadFunction は、Python プログラムの出力 (stdout に書き込まれるデータ) を処理する方法を RunProgram に指示します。 実際の JSL 関数を指定すると、関数関数を使用すると、例のように、JSL と Python が独立して実行され、JMP がアイドル状態になるたびに、JSL 関数を呼び出して Python からさらに出力を取得できます。 これは、Python プログラムが永久に実行され、無限の出力ストリームを作成する場合に役立つ可能性があります。 ここに掲載されている他の例では、 readfunction("テキスト")これは、Python プログラム (もちろん終了する必要があります) からすべての出力を取得する簡単な方法です。 出力は runProgram 関数の結果として返されます。
runProgram が呼び出す関数を指定する場合は、JMP と Python 間の接続がすぐに切断されないように、runprogram オブジェクトを JSL 変数に保持する必要もあります。オブジェクト= runProgram(...)
のこれreadFunction のパラメータは、オブジェクト上の変数。 これにより、<
編集: そして、書き込み関数の出力は JMP ログに送られます。必ずそこで結果を確認してください。
Re: JSL から Python スクリプトを実行する「プログラムの実行」コマンドに苦労しています。 以下の行はコマンド プロンプトからは正常に機能します。
c:\mycompany\anaconda3\python.exe "c:\users\myuserid\temp\pythonsqltest.py"
このスクリプトを実行して実行しようとしています。
Names Default To Here( 1 );
RP = RunProgram(
Executable( "c:\mycompany\anaconda3\python.EXE" ),
Options( {"c:\users\myuserid\temp\pythonsqltest.py"} ),
ReadFunction( Function( {this}, Write( this << read ) ) )
);
ここで「ReadFunction」が果たす役割をよく理解していないと思います。 私には何が欠けているのでしょうか?
Re: JSL から Python スクリプトを実行するこれは私が遊んでいた例です
txt=runprogram(executable("python"),options({"C:\Users\User\Desktop\tweepy\twpy2.py"}),readfunction("text"));
Tweepy は twitter 用の Python パッケージです。 この例では、JSL が続行する前に、Python プログラムが開始し、出力を生成し、終了することを想定しています。 RunProgram を使用する他の方法もあります。
Re: JSL から Python スクリプトを実行する使用
RunProgram()
関数。
詳細については、以下を参照してください。
ヘルプ==>スクリプトインデックス==>プログラムの実行