在 Mac 上執行 unix「which」指令的程式我正在嘗試使用 Run Program() 命令來執行 unix 命令“/usr/bin/which -a Python3”。我仍在學習,所以如果答案看起來很明顯,我很抱歉。順便說一下,我在 MacOS Sonoma 14.7.1 上運行 JMP Pro 17.2。需要注意的是 Mac 的問題,因為它與 PC 的語法似乎有一些細微的差別。
嘗試 1(僅確認運行程序有效):
RP = Run Program(
Executable("/usr/bin/which"),
Options({"Python3"}), //No "-a" modifier
readFunction("text")
);
這不會給出任何錯誤,但只傳回一個 Python3 實例(“/usr/bin/Python3”),而我正在尋找用戶電腦上的所有 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")
);
這並沒有返回錯誤,而只是返回“”。
我嘗試了其他幾種方法,但似乎都沒有效果。任何人提供的任何建議都將不勝感激。謝謝。
自動化和腳本macOS回覆:關於使用「運行程式」的幫助#3 是 Mac 上的正確方法。在 Win 上,#2 也有效。 JMP 是什麼版本?我猜 JMP 的最新版本可能會做一些事情來讓 Python 的內部版本滿意,您可能會看到副作用。 @Paul_Nelson
#4 也許 bin/sh 不是支援 -a 參數的 shell?
回覆:關於使用「運行程式」的幫助謝謝克雷格。 #3 對我來說不起作用。只是好奇,你能確認#3 可以在你的 Mac 上運行嗎?我嘗試在具有 4 個 Python 實例的用戶電腦上進行操作,但只返回一個 Python 路徑。我的結果也是一樣。我在 MacOS Sonoma 14.7.1 上運行 JMP Pro 17.2。有人告訴我 JMP 18 內建有 python,但我們的組織仍然使用 17.2。
回覆:關於使用「運行程式」的幫助抱歉,這裡沒有 Mac。我確實在 Linux 上運行了 -a 來查看輸出。在 Mac 上,需要像在 3 中一樣拆分參數。在 Win 上,它們會從建構的命令列重新解析,但在 Mac 上則不會。
回覆:關於使用「運行程式」的幫助/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
我@我的機器〜%/ usr / bin / python3
Python 3.9.6(默認,Oct 4 2024,08:01:31)
Darwin 上的 [Clang 16.0.0 (clang-1600.0.26.4)]
輸入「幫助」、「版權」、「信用」或「許可」以獲取更多資訊。
>>> ^D
我@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 根 行政 4月384日 8 16:26 3.13/
lrwxr-xr-x 1個根 車輪 2017年4月4日 10:31 目前@ -> 3.12
最後安裝的 Python 是 Current 指向的 Python,我安裝了 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 一起使用。但是,當您啟動 JMP 時,Python 就可以立即運作。 JMP 18 及更高版本為您提供了 Python 腳本編輯器以及 JSL 腳本編輯器, Python 程式碼可以存取資料表並能夠從 Python 呼叫 JSL,就像您現在可以從 JSL 呼叫 Python 一樣。 Mac 上的 JMP 17 應該使用 Python Init() 在 /Library/Frameworks/Python.framework 中找到目前的 Python