Ejecutar programa en Mac para el comando "which" de UnixEstoy intentando usar el comando "Ejecutar programa()" para ejecutar el comando de Unix "/usr/bin/which -a Python3". Todavía estoy aprendiendo, así que disculpen si la respuesta parece obvia. Para que conste, estoy usando JMP Pro 17.2 en macOS Sonoma 14.7.1. Es importante tener en cuenta lo de Mac, ya que parece haber algunas diferencias sutiles de sintaxis con respecto a las PC.
Intento 1 (solo para confirmar que Ejecutar programa funciona):
RP = Run Program(
Executable("/usr/bin/which"),
Options({"Python3"}), //No "-a" modifier
readFunction("text")
);
Esto no genera ningún error, sino que solo devuelve una instancia de Python3 ("/usr/bin/Python3"), y estoy buscando todas las instancias de Python3 en el equipo del usuario. Pero al menos me demuestra que puedo hacer funcionar la función "Ejecutar programa".
Intento 2 (añadiendo el modificador "-a"):
RP = Run Program(
Executable("/usr/bin/which"),
Options({"-a Python3"}),
readFunction("text")
);
Esto falla y devuelve:
"/usr/bin/which: illegal option --
usage: which [-as] program ...
"
Intento 3 (usando una sintaxis ligeramente diferente):
RP = Run Program(
Executable("/usr/bin/which"),
Options({"-a", "Python3"}), //"-a" is now a separate list item
readFunction("text")
);
Esto no falla, pero devuelve lo mismo que en mi primer intento (como si no hubiera ningún modificador "-a"):
Intento 4 (crear un script bash y ejecutar el comando 'which' desde allí):
Creé el archivo de texto simple y lo guardé en mi escritorio.
#!/bin/bash
/usr/bin/which -a python3
Luego ejecuté esto en JMP:
</CODE><CODE class=" language-jsl">RP = Run Program(
Executable("/bin/sh"),
Options({"/Users/stefannikles/Desktop/usrbinwhich.txt"}),
readFunction("text")
);
Esto no devolvió un error, sino sólo "".
He probado varias cosas, pero ninguna parece funcionar. Agradeceré cualquier consejo. Gracias.
Automatización y scriptingmacOSRe: Ayuda sobre el uso de "Ejecutar programa"El método n.° 3 es correcto en Mac. En Windows, el método n.° 2 también funcionaría. ¿Qué versión de JMP? Supongo que las versiones más recientes de JMP podrían mejorar la versión interna de Python y podrías estar experimentando un efecto secundario. @Paul_Nelson
#4 ¿Tal vez bin/sh no sea un shell que admita el parámetro -a?
Re: Ayuda sobre el uso de "Ejecutar programa"Gracias, Craig. El punto 3 no me funciona. Solo por curiosidad, ¿pudiste confirmar que el punto 3 funciona en tu Mac? Lo intenté en el ordenador de un usuario con cuatro instancias de Python, pero solo devuelve una ruta de Python. El mismo resultado en el mío. Estoy usando JMP Pro 17.2 en macOS Sonoma 14.7.1. Me han dicho que JMP 18 tiene Python integrado, pero nuestra organización todavía usa la versión 17.2.
Re: Ayuda sobre el uso de "Ejecutar programa"No tengo Mac, lo siento. Ejecuté el comando -a en Linux para ver el resultado. En Mac, es necesario dividir los parámetros como hiciste en el paso 3. En Windows, se vuelven a analizar desde una línea de comandos, pero no en Mac.
Re: Ayuda sobre el uso de "Ejecutar programa"/usr/bin/python3 se incluye con macOS para su uso en macOS. No es un Python actual, sino el único que devuelve el programa. Todas las instalaciones de Python.org se dirigen a /Library/Frameworks/Python.framework
En mi macOS Sonoma 14.7.5 tengo Python 3.10, 3.11, 3.12, 3.13 (y /usr/bin/python3 es 3.9.6)
-rwxr-xr-x 77 raíz rueda 119008 19 de marzo 15:20 /usr/bin/python3*
yo@mi_máquina ~ % archivo /usr/bin/pyth
/usr/bin/python3: binario universal Mach-O con 2 arquitecturas: [x86_64: ejecutable Mach-O de 64 bits x86_64] [arm64e: ejecutable Mach-O de 64 bits arm64e]
/usr/bin/python3 (para arquitectura x86_64): ejecutable Mach-O de 64 bits x86_64
/usr/bin/python3 (para arquitectura arm64e): ejecutable Mach-O de 64 bits arm64e
yo@mi_máquina ~ % /usr/bin/python3
Python 3.9.6 (predeterminado, octubre) 4 2024, 08:01:31)
[Clang 16.0.0 (clang-1600.0.26.4)] en darwin
Escriba "ayuda", "copyright", "créditos" o "licencia" para obtener más información.
>>> ^D
yo@mi_máquina ~ % ls -l /Library/Frameworks/Python.framework/Versions
total 0
drwxrwxr-x 12 raíz administración 384 17 de abril 10:29 3.10/
drwxr-xr-x 10 yo personal 320 10 de abril 15:35 3.11/
drwxrwxr-x 11 raíz administración 352 17 de abril 10:31 3.12/
drwxrwxr-x@ 12 raíz administración 384 Abr 8 16:26 3.13/
lrwxr-xr-x 1 raíz rueda 4 abr 17 10:31 Actual@ -> 3.12
El último Python instalado es el que indica Current, instalé la última actualización binaria para Python 3.12.
JMP 18 se entrega con Python 3.11.x integrado. La versión JMP 18.2.1 se ha actualizado con la actualización de seguridad de Python 3.11.12. Los EA de JMP 19 se instalan con la versión más reciente de Python 3.13.x.
Nota sobre las versiones compatibles de Python: JMP no admite la conexión con Anaconda Python; solo es compatible con Python.org. Con JMP 18 y JMP 19, solo el Python proporcionado por JMP funciona con JMP. Sin embargo, este Python funciona de inmediato al iniciar JMP. JMP 18 y posteriores ofrecen un editor de scripts de Python, además del editor de scripts de JSL, y el código Python tiene acceso a tablas de datos y la capacidad de llamar a JSL desde Python, al igual que ahora se puede llamar a Python desde JSL. JMP 17 en Mac debería encontrar el Python actual en /Library/Frameworks/Python.framework con Python Init().