(14.03.2016 11:27 )n4f3ts schrieb: Genau, die Python Bibliotheken sind im Python Programm eingebunden,
Sind Sie aber eben nicht! Die Python Standard-Funktionsbibliotheken (ausser einigen wenigen low level Bibliotheken) sind fast alle im Lib Unterverzeichnis in der Python Installation als externe (zum Teil vorkompilierte) Python Scripts anwesend.
Die Python DLL wurde irgendwann mal zwischen Python 2.3 und 2.5 von dem Python Installationsdirectory ins System32 Directory befördert und hier beginnt das Problem.
Die Python DLL probiert während dem Starten das Python Installationsdirectory zu finden. Dazu liest sie verschiedene Environment Variablen, danach die Registry und zuletzt wird das Directory wo die DLL ist und danach das Directory wo das aktuelle Executable File ist durchsucht. Leider scheinen alle aktuellen Python Installer aber zu vergessen, eine dieser Environmentsvariablen zu setzen (weniger wünschenswerte Option unter Windows) oder einen entsprechenden Registryeintrag zu machen. Das Directory wo die Python DLL ist hilft auch nicht mehr seit diese DLL ins System32 Directory verschoben wurde und das Directory der aktuellen Application ist für den Python Interpreter zwar korrekt und darum funktioniert es dort auch noch, aber LabVIEW ist natürlich an einem ganz anderen Ort installiert.
Der einfachste Fix ist daher um am Anfang Deines Scripts bevor irgendein import Statement gemacht wird die Zeile
Code:
sys.path.append("C:\Python27\Lib")
hinzuzufügen, mit dem Path natürlich so angepasst dass er auf Deine aktuelle Python Installation weist. Andere Workarounds wären um eine der Umgebungsvariablen PYTHONPATH oder PYTHONHOME zu setzen. PYTHONHOME sollte dabei das Installationsdirectory von Python sein (z.B. "C:\Python27"), während PYTHONPATH der Syntax von sys.path entspricht.
Oder man könnte einen Registryeintrag machen unter "HKLM\Software\Python\PythonCore\<version>\PythonPath\<name>" mit dem Pfad zum Python Lib-Directory als Wert.
<version> entspricht dabei der Python Version und <name> ist ein beliebiger Name, hier zum Beispiel "Lib".
Dann sollten die eingebauten Libraries von Python auch von LapPython aus verfügbar sein. Ausführung von numpy und scipy wird aber danach immer noch ein Problem sein, da hier scheinbar eine Inkompatibilität besteht aufgrund von Multithreadingproblemen. LabVIEW ist voll Multithreading, Python grundsätzlich nicht und numpy und scipy und möglicherweise andere Libraries geraten dann irgendwie ins Trudeln. LabPython versucht zwar um das zu verhindern durch entsprechende Python Funktionen anzurufen aber irgendetwas scheint dabei nicht ganz so gut zu gehen, möglicherweise bedingt durch Änderungen in Python seit der ursprünglichen Implementation von LabPython unter Python 2.2 und 2.3.