MacでUnixの「which」コマンドを使ってプログラムを実行するRun Program() コマンドを使って、Unixコマンド「/usr/bin/which -a Python3」を実行しようとしています。まだ勉強中なので、答えが当たり前のように思えたら申し訳ありません。ちなみに、JMP Pro 17.2をmacOS Sonoma 14.7.1で実行しています。Macの場合、PCとは微妙な構文の違いがあるようなので、注意が必要です。
試行 1 (プログラムの実行が機能することを確認するだけ):
RP = Run Program(
Executable("/usr/bin/which"),
Options({"Python3"}), //No "-a" modifier
readFunction("text")
);
エラーは発生しませんが、Python3のインスタンス("/usr/bin/Python3")が1つだけ返されます。私はユーザーのコンピュータ上のPython3のすべてのインスタンスを検索しています。しかし、少なくとも「プログラム実行」機能が動作することは確認できました。
試行 2 (「-a」修飾子を追加):
RP = Run Program(
Executable("/usr/bin/which"),
Options({"-a Python3"}),
readFunction("text")
);
これは失敗し、次を返します:
"/usr/bin/which: illegal option --
usage: which [-as] program ...
"
試行 3 (少し異なる構文を使用):
RP = Run Program(
Executable("/usr/bin/which"),
Options({"-a", "Python3"}), //"-a" is now a separate list item
readFunction("text")
);
これは失敗しませんが、最初の試みと同じものを返します (「-a」修飾子がない場合と同様)。
試行 4 (bash スクリプトを作成し、代わりにそこから 'which' コマンドを実行する):
簡単なテキストファイルを作成し、デスクトップに保存しました
#!/bin/bash
/usr/bin/which -a python3
次に、JMP でこれを実行しました。
</CODE><CODE class=" language-jsl">RP = Run Program(
Executable("/bin/sh"),
Options({"/Users/stefannikles/Desktop/usrbinwhich.txt"}),
readFunction("text")
);
この場合、エラーは返されず、「」のみが返されます。
他にもいくつか試してみましたが、どれもうまくいきません。どなたかアドバイスをいただけると嬉しいです。ありがとうございます。
自動化とスクリプトmacOSRe: 「プログラム実行」の使い方に関するヘルプMacでは#3が正しい方法です。Windowsでは#2も使えます。JMPのバージョンは?最近のJMPはPythonの内部バージョンをうまく動作させるために何らかの処理を行っていて、その副作用が出ているのかもしれません。 @Paul_Nelson
#4 bin/sh は -a パラメータをサポートするシェルではないのでしょうか?
Re: 「プログラム実行」の使い方に関するヘルプクレイグさん、ありがとうございます。#3は私の環境ではうまくいきませんでした。ちょっと気になったのですが、#3がMacで動作するか確認できましたか? Pythonインスタンスが4つあるユーザーのコンピュータで試してみましたが、Pythonのパスが1つしか返ってきませんでした。私の環境でも同じ結果です。MacOS Sonoma 14.7.1でJMP Pro 17.2を実行しています。JMP 18にはPythonが組み込まれていると聞いていますが、私たちの組織ではまだ17.2を使っています。
Re: 「プログラム実行」の使い方に関するヘルプ申し訳ありませんが、Macは使っていません。Linuxでは出力を確認するために -a オプションを実行しました。Macでは、3のようにパラメータを分割する必要があります。Windowsでは構築されたコマンドラインからパラメータが再解析されますが、Macではそうではありません。
Re: 「プログラム実行」の使い方に関するヘルプ/usr/bin/python3はmacOSで使用できるようにmacOSに同梱されているものですが、これは最新のPythonではなく、プログラムによって返される唯一のものです。Python.orgのインストールはすべて/Library/Frameworks/Python.frameworkにインストールされます。
私のmacOS Sonoma 14.7.5にはPython 3.10、3.11、3.12、3.13(/usr/bin/python3は3.9.6)が入っています。
-rwxr-xr-x 77ルート 車輪 119008 3月19日 15:20 /usr/bin/python3*
me@my_machine ~ % ファイル /usr/bin/pyth
/usr/bin/python3: 2 つのアーキテクチャを持つ Mach-O ユニバーサル バイナリ: [x86_64:Mach-O 64 ビット実行ファイル x86_64] [arm64e:Mach-O 64 ビット実行ファイル arm64e]
/usr/bin/python3 (アーキテクチャ x86_64 の場合): Mach-O 64 ビット実行ファイル x86_64
/usr/bin/python3 (アーキテクチャ arm64e 用): Mach-O 64 ビット実行ファイル arm64e
me@my_machine ~ % /usr/bin/python3
Python 3.9.6 (デフォルト、10月 2024年4月8日 01:31
[Clang 16.0.0 (clang-1600.0.26.4)] ダーウィン版
詳細については、「help」、「copyright」、「credits」、または「license」と入力してください。
>>> ^D
me@my_machine ~ % ls -l /Library/Frameworks/Python.framework/Versions
合計 0
drwxrwxr-x 12ルート 管理者 384 4月17日 10:29 3.10/
drwxr-xr-x 10 私 スタッフ 320 4月10日 15:35 3.11/
drwxrwxr-x 11 ルート 管理者 352 4月17日 10:31 3.12/
drwxrwxr-x@ 12 ルート 管理者 384 4月 8 16:26 3.13/
lrwxr-xr-x 1ルート 車輪 2017年4月4日 10:31 現在値@ -> 3.12
最後にインストールされた Python は Current によって指示されるもので、Python 3.12 の最新のバイナリ アップデートをインストールしました。
JMP 18にはPython 3.11.xが組み込まれています。JMP 18.2.1リリースはPython 3.11.12のセキュリティアップデートで更新されています。JMP 19のEAは最新のPython 3.13.xでインストールされています。
適切なPythonバージョンに関する注意:JMPはAnaconda Pythonへの接続をサポートしておらず、Python.org Pythonのみをサポートしています。JMP 18およびJMP 19では、JMPが提供するPythonのみがJMPで動作します。ただし、そのPythonはJMPを起動した瞬間からすぐに使用できます。JMP 18以降では、PythonスクリプトエディターとJSLスクリプトエディターが提供されており、Pythonコードはデータテーブルにアクセスでき、PythonからJSLを呼び出すことができます。JSLからPythonを呼び出すことができるようになりました。Mac版のJMP 17では、Python Init()を使用して、/Library/Frameworks/Python.frameworkにある現在のPythonを見つけるだけです。