Py Script aus C# Service

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
stony007_de
User
Beiträge: 9
Registriert: Donnerstag 1. Februar 2018, 20:17

Donnerstag 1. Februar 2018, 20:29

Hi

Ich hab einen C# Service welcher unter dem lokalen System läuft.
Dieser ruft die App “c:\python\python.exe” und als Argument “c:\demo\skript.py”.
im
Mein Problem: es passiert nix!!!
Im skript werden DB Aktionen durchgeführt. Starte ich das Skript per hand läufst, starte ich aus deiner c# Standard App gehts auch... ???

Ersetzte ich das Skript.py durch ein Test.py in welcher einfach ein Textfile geschrieben wird, geht das (mit vollständig angegeben Ziel Pfad) auch.
Würd ich nicht den gesamten Pfad angeben, würd das textfile nicht im Verzeichnis des Test.py Skripts sondern im c:\Windows\wow64. Wahrscheinlich da der Systemuser den Prozess startet.

Hat jemand eine Idee?

Bin für alles offen.

Vg
Stony007_de
Sirius3
User
Beiträge: 7628
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 1. Februar 2018, 20:44

@stony007_de: wie startest Du das Skript? Was tut das Skript? Gibst Du die Fehler- und Standardausgabe auch aus? Um den Fehler einzugrenzen hilft es dann, Logausgaben einzubauen.
stony007_de
User
Beiträge: 9
Registriert: Donnerstag 1. Februar 2018, 20:17

Freitag 2. Februar 2018, 05:52

Moin

Nix, er wirft nix.. Da das unter dem SystemUser läuft, kommt auch mehr Meldung oder cmd Box hoch.

Den Aufruf der python.exe als auch des Skripts mach ich über einen Prozess um c# welcher die absoluten pfade aufruft.
Sirius3
User
Beiträge: 7628
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 2. Februar 2018, 08:10

stony007_de hat geschrieben:Da das unter dem SystemUser läuft, kommt auch mehr Meldung oder cmd Box hoch.
Kannst Du das nochmal anders ausdrücken, ich versteh es nicht.

Du solltest Dein C#-Programm in einer Konsole ausführen, und dafür sorgen, dass auch Python-Ausgaben dort landen. Dann kannst Du mit Debug-Meldungen auch den Fehler besser eingrenzen.
stony007_de
User
Beiträge: 9
Registriert: Donnerstag 1. Februar 2018, 20:17

Freitag 2. Februar 2018, 18:44

Einen Windows Service in eine Consolen Anwendung packen ist schlichtweg nicht möglich.
Aber ich hab das Problem gefunden. Der Service läuft, wie gesagt als System User somit auch mit dem Working Dir C:\Windows\System ... Da findet er natürlich keine Imports. ;-)
Im C# Prozess hab ich das WorkingDirectory manuell gesetzt und voila...es läuft!!!

Danke für die Tipps..
Antworten