在 Mac 上运行 unix“which”命令的程序我正在尝试使用 Run Program() 命令执行 unix 命令“/usr/bin/which -a Python3”。我还在学习中,所以如果答案看起来显而易见,请见谅。顺便说一下,我在 MacOS Sonoma 14.7.1 上运行的是 JMP Pro 17.2。Mac 的情况需要注意,因为 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回复:关于使用“运行程序”的帮助在 Mac 上,#3 是正确的方法。在 Windows 上,#2 也有效。JMP 是什么版本?我猜较新版本的 JMP 可能会做一些事情来让 Python 内部版本兼容,你可能会看到一些副作用。 @Paul_Nelson
#4 也许 bin/sh 不是一个支持 -a 参数的 shell?
回复:关于使用“运行程序”的帮助谢谢 Craig。#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 中那样拆分参数。在 Windows 上,它们会从构建的命令行重新解析,但在 Mac 上则不会。
回复:关于使用“运行程序”的帮助/usr/bin/python3 是 macOS 系统自带的 Python 版本,供 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 及更高版本不仅提供 JSL 脚本编辑器,还提供 Python 脚本编辑器,Python 代码可以访问数据表,并能够从 Python 调用 JSL,就像您现在可以从 JSL 调用 Python 一样。Mac 上的 JMP 17 应该只需使用 Python Init() 函数在 /Library/Frameworks/Python.framework 中找到当前的 Python 版本即可。