Wie verwenden Sie die standard-Bibliothek in IronPython?

Ich werde Präfix diese Frage mit: Nein, die Einstellung IRONPYTHONPATH ist nicht die Antwort.

Sowieso...

Ich war in der Planung mit IronPython als Ersatz für Powershell für ein Projekt, aber ich war ratlos, bevor ich überhaupt angefangen haben.

Das erste, was ich zu tun versuchte, wurde mit os.Pfad resultieren in:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named os

Nach Herumspielen habe ich endlich entdeckte, konnte ich verwenden der standard-Bibliothek, indem Sie es manuell in den Pfad:

import sys
sys.path.append(r"C:\Program Files\IronPython 2.7\Lib")
import os

Dies ist jedoch eine alberne Idee. Harte Codierung der Pfad zum python-Bibliothek, innerhalb meines scripts ist eine 100% garantierten Weg, dass Sie nicht irgendwann.

Entdeckte ich diese fast sofort, wenn ich versuchte, verwenden Sie das Skript auf einem windows 7-Rechner und der Weg war etwas anders ('Program Files (x86)').

So, ein paar Fragen hier:

1) Warum ist es so schwer mit der standard-Bibliothek? Zumindest ich hätte gedacht, dass die interaktive Eingabeaufforderung in VS und basic ipy.exe hätte diese.

2) Wie kann ich ermitteln, das Verzeichnis, iron python installiert ist, unabhängig von dem system, das ich verwende? (IronPython-installer Einstellung eines var-vielleicht?)

Nur hier eine Anmerkung; ja, ich habe gesehen, einige andere Beiträge sagen, "legen Sie Ihre IRONPYTHONPATH". Diese in wenig hilfreich. Wenn ich eine leere Maschine, dass bedeutet, ich muss:

1) Installieren IronPython

2) Führen Sie einige verrückte powershell-Skript heraus zu suchen, wo-immer-der-Teufel der standard-library installiert wurde, und legen Sie eine Globale IRONPYTHONPATH-variable zu.

3) Ausführen von python-Skripten

Ich bin auf der Suche nach einem besseren Weg.

--

Edit:

Die Tatsache, ich bin mit diesem zu tun powershell Dinge mögen, ist im Grunde irrelevant, aber ich versuche, etwas zu erreichen, wie:

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)
  • Könnten Sie zeigen ein Beispiel-Skript, was würden Sie versuchen zu tun ist und wie Sie beabsichtigen, es zu benutzen? Ich bin mir nicht sicher, ob ich verstehe, was das problem ist.
  • siehe edit oben. Dies ist im Grunde irrelevant für meine Frage aber.
InformationsquelleAutor Doug | 2011-08-10
Schreibe einen Kommentar