LabVIEWForum.de
Python Code in LabVIEW nutzen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Python Code in LabVIEW nutzen (/Thread-Python-Code-in-LabVIEW-nutzen)



Python Code in LabVIEW nutzen - n4f3ts - 14.03.2016 10:34

Hallo zusammen,

ich möchte gerne bestehenden Python Code in LabVIEW einbinden. Ich habe mir dazu schon so einiges durchgelesen was ich bei google finden konnte, habe aber noch keine passende Lösung gefunden.

Ich habe folgendes schon ausprobiert:
Mit "Systembefehl ausführen"
[attachment=55464]
kann ich die Python.exe starten und eine .py-Datei laden. Problem hierbei ist, dass ich Daten nicht so einfach und komfortabel an das Python-Programm übergeben kann...

Des Weitern habe ich die OpenG Bibliothek "LabPython" installiert und ausprobiert. Diese funktioniert zwar grundsätzlich aber sobald ich in meinem Python-Code Bibliotheken einbinde (wie z.B. NumPy oder SciPy) funktioniert es wiederum nicht.

Was ich eigentlich machen will ist meinem Python Code mehrere Arrays oder auch Variablen übergeben, das Python Programm berechnet irgendetwas und gibt mir ein Array oder eine Variablen zurück.

Hat irgend jemand eine Lösung für dieses Problem?
Schon mal vielen Dank!

Gruß
Stefan


RE: Python Code in LabVIEW nutzen - Freddy - 14.03.2016 11:09

Hallo Stefan,
was kann Python, was LabView nicht kann?

Das Problem mit den Bibliotheken liegt doch eher an dem Python - Programm.
Das Python Main muss doch die Bibliothek eingebunden haben oder einbinden, nicht LabView.

Gruß
Freddy


RE: Python Code in LabVIEW nutzen - n4f3ts - 14.03.2016 11:27

Hallo Freddy,

Zitat:was kann Python, was LabView nicht kann?
Ich habe nur die LabVIEW Base Version (d.h. mir steht nur grundlegende Mathematik zur Verfügung) und Python kann alles was Matlab auch kann und kostet nix Big Grin.

Zitat:Das Problem mit den Bibliotheken liegt doch eher an dem Python - Programm
Die Python Programme an sich funktionieren alle, wenn ich sie ohne LabVIEW verwende.

Zitat:Das Python Main muss doch die Bibliothek eingebunden haben oder einbinden, nicht LabView.
Genau, die Python Bibliotheken sind im Python Programm eingebunden, funktionieren aber nicht (oder nur teilweise) in Verbindung mit der OpenG Bibliothek "LabPython"...


Gruß
Stefan


RE: Python Code in LabVIEW nutzen - GerdW - 14.03.2016 11:33

Hallo Stefan,

Zitat: Python Bibliotheken sind im Python Programm eingebunden, funktionieren aber nicht (oder nur teilweise) in Verbindung mit der OpenG Bibliothek "LabPython"...
Dann kannst du diesen Weg nicht nutzen und musst dein Skript über SysExec aufrufen!

Zitat:meinem Python Code mehrere Arrays oder auch Variablen übergeben, das Python Programm berechnet irgendetwas und gibt mir ein Array oder eine Variablen zurück.
Die üblichen Antworten lauten:
- Dateien schreiben/lesen
- Netzwerk-Kommunikation nutzen
- Bei SysExec kann man sich auch den Output des Skripts zurückmelden lassen


RE: Python Code in LabVIEW nutzen - n4f3ts - 14.03.2016 12:42

Hallo GerdW,

Zitat: Dateien schreiben/lesen
Ok, d.h. ich muss meine Arrays z.B. in eine .csv -Datei schreiben und Sie in meinem Python-Code wieder einlesen oder meinst du was anderes? (So habe ich es schon mal ausprobiert und hat auch funktioniert)

Zitat:Netzwerk-Kommunikation nutzen
Weiß ich jetzt leider nicht was du damit meinst.


Gruß
Stefan


RE: Python Code in LabVIEW nutzen - GerdW - 14.03.2016 12:46

Hallo Stefan,

Zitat:d.h. ich muss meine Arrays z.B. in eine .csv -Datei schreiben und Sie in meinem Python-Code wieder einlesen oder meinst du was anderes?
CSV-Dateien sind schön, du kannst aber beliebige Formate und Dateiendungen benutzen Big Grin

Zitat:Weiß ich jetzt leider nicht was du damit meinst.
TCP/UDP über die IP-Adresse "localhost"…


RE: Python Code in LabVIEW nutzen - rolfk - 14.03.2016 15:20

(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.


RE: Python Code in LabVIEW nutzen - n4f3ts - 17.03.2016 09:23

Hallo,

OK, danke für die Hilfe!

Gruß
Stefan