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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich finde, dafür, dass alles funktioniert für nicht-Entwickler, der Dritte, ist es meist besser, zu verwenden pyc.py zum erstellen der DLL und ausführbare Datei. Ich routinemäßig eine DLL erstellen, die python-standard-Module und-Referenz, die in code. Siehe meine Vorherige Antwort auf diese Frage IronPython: EXE kompiliert mit pyc.py nicht-import-Modul "os"
Es ist ein bisschen workaroundish aber angesichts der Tatsache, dass die LIB-Verzeichnis der ironpython installiert ist, unter den x86 Programm Ordner Dateien in 64bit-Systemen und die üblichen Programm-Dateien Pfad auf 32bit-Systemen, die Sie tun könnten, auf diese Weise:
Hier verwenden wir
%ProgramFiles%
und%ProgramFiles(x86)%
so ermitteln Sie den Pfad, wo IronPython ist installiert.Zitiere wikipedia über
%ProgramFiles%
variable (link):Dies ist sehr merkwürdig, denn wenn Sie ausführen, die die IronPython-Installationsprogramm, und führen Sie dann
C:\Program Files\IronPython 2.7\ipy.exe
oderC:\Program Files (x86)\IronPython 2.7\ipy.exe
sollten Sie nicht brauchen, etwas zu tun zu haben, die stdlib zur Verfügung.Meine Vermutung ist, dass Sie mehr als ein IronPython und man wird die falsche ein, aber nur, weil ich kann nicht denken, ein weiterer Grund, warum dies passieren würde. Es soll Einfach Funktionieren.