Voy a prefijar esta pregunta con: No, el ajuste IRONPYTHONPATH no es la respuesta.¿Cómo se usa la biblioteca estándar en IronPython?
En fin ...
que estaba planeando sobre el uso de IronPython como un reemplazo para Powershell para un proyecto, pero me han confundido antes de haber siquiera empecé.
La primera cosa que traté de hacer fue os.path uso, lo que resulta en:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named os
Después de jugar un poco, finalmente descubrí que podía usar la biblioteca estándar agregando manualmente a la ruta:
import sys
sys.path.append(r"C:\Program Files\IronPython 2.7\Lib")
import os
Sin embargo, esta es una idea tonta. La codificación rigurosa del camino a la biblioteca de Python dentro de mis scripts es una forma 100% garantizada de hacer que no funcionen en algún momento.
Descubrí esto casi de inmediato cuando traté de usar la secuencia de comandos en una máquina con Windows 7 y la ruta era ligeramente diferente ('Archivos de programa (x86)').
Así, un par de preguntas aquí:
1) Por qué es tan difícil de usar la biblioteca estándar? Por lo menos, hubiera pensado que el mensaje interactivo en VS y el ipy.exe básico tendrían esto.
2) ¿Cómo puedo determinar el directorio en el que iron python está instalado, independientemente del sistema que estoy usando? (instalador de IronPython configurando una var quizás?)
Solo una nota aquí; sí, he visto otras publicaciones que dicen "configure su IRONPYTHONPATH". Esto en inútil. Si tengo una máquina en blanco que significa que tengo que:
1) Instalar IronPython
2) Ejecutar una secuencia de comandos PowerShell loca a buscar a donde quiera-la-diablos se instaló la biblioteca estándar y establecer un mundial IRONPYTHONPATH variable a ella.
3) Ejecutar los guiones pitón
estoy en busca de una mejor manera.
-
Editar:
El hecho de que estoy usando esto para hacer que las cosas PowerShell es básicamente irrelevante, pero estoy tratando de lograr algo como:
import clr
from System.Management.Automation import RunspaceInvoke
import os
scriptRoot = os.getcwd()
runSpace = RunspaceInvoke()
cmdPath64 = os.join(scriptRoot, "..\java\...")
cmdPath32 = os.join(scriptRoot, "..\java\...")
proc = runSpace.Invoke("Get-WmiObject Win32_Processor ... ")
if proc.AddressWidth == 32:
runSpace.Invoke(cmdPath32)
else:
runSpace.Invoke(cmdPath64)
¿Podría mostrar un script de ejemplo de lo que intentaría hacer y cómo piensa utilizarlo? No estoy seguro de entender cuál es el problema. –
ver la edición anterior. Sin embargo, esto es básicamente irrelevante para mi pregunta. – Doug