Seite 1 von 1

Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Montag 10. Juli 2023, 08:44
von NinoBaumann
Hallo,

ich habe ein Java Skript und ein Python Skript, welches ich über ein PowerShell Skript ausführen möchte. Java Skript ist von einem Kollegen und das Python Skript von mir. Das ganze möchte ich alle 90 Sekunden wiederholen. Dazu habe ich mir folgenden Code geschrieben:

Code: Alles auswählen

while (1 -eq 1 ){
java -jar I:/SharedFolders/HA_Gelenkmontage/Ausschusserfassung/Gelenkmontage_879/QDAS_Import_fat5.jar "//neumayer-tekfor/data01/CAX/SPC/EN/NTSP073/PBLD/" "I:/SharedFolders/HA_Gelenkmontage/Ausschusserfassung/Gelenkmontage_879/NTSP073/" 6
python M:\HA\PED\ProcessEngineering\Mitarbeiter\Baumann\Python_Datenaufzeichnung_GM2\Gelenkmontagedaten_7759_7732_Datenaufzeichnung.py
cls
$command
start-sleep -seconds 90
}
Das Problem ist jetzt aber, dass ich bei meinem Python Skript folgenden Fehler bekomme.

Code: Alles auswählen

PS M:\HA\PED\ProcessEngineering\Mitarbeiter\Baumann> M:\HA\PED\ProcessEngineering\Mitarbeiter\Baumann\GM_Daten_Logging.ps1
Python : Traceback (most recent call last):
In M:\HA\PED\ProcessEngineering\Mitarbeiter\Baumann\GM_Daten_Logging.ps1:1 Zeichen:1
+ Python M:\HA\PED\ProcessEngineering\Mitarbeiter\Baumann\Python_Datena ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Traceback (most recent call last)::String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
  File "M:\HA\PED\ProcessEngineering\Mitarbeiter\Baumann\Python_Datenaufzeichnung_GM2\Gelenkmontagedaten_7759_7732_Datenaufzeichnung.py", line 7, in <module>
    from sklearn.linear_model import LinearRegression
ModuleNotFoundError: No module named 'sklearn'
Ich verstehe es aber nicht, da ich das Problem nicht habe, wenn ich das Python Skript separat über Spyder rennen lasse.
Kann mir jemand helfen?

Re: Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Montag 10. Juli 2023, 09:12
von __blackjack__
@NinoBaumann: Dann wird Spyder entweder eine andere Python-Installation verwenden, oder dort hast Du ein venv angelegt in dem die Module installiert sind, und das beim Aufruf von der PowerShell aus nicht aktiviert ist.

Bei Java spricht man übrigens selten von „Skripten“. Und auch bei Python hat man meistens ein Programm und kein Skript. Die Trennung zwischen beiden ist nicht so ganz scharf. Larry Wall, der Autor von Perl, hat dazu mal gesagt “A script is what you give the actors, a program is what you give the audience”. Also wenn man von demjenigen der das bekommt erwartet das er reinschaut, Anmerkungen rein schreibt, und das ein bisschen für sich passend umändert, dann ist es ein Skript. Wenn es so genommen und benutzt wird wie es kommt, ist es ein Programm.

Re: Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Montag 10. Juli 2023, 09:16
von NinoBaumann
Hallo blackjack,

danke schonmal für die Hilfe und den Unterschied zwischen Skript und Programm. Wieso funktionieren dann die anderen Importe? Müsste hier dann nicht auch schon ein Fehler auftreten?

Code: Alles auswählen

import pandas as pd
import datetime
import glob
import time
from pathlib import Path
import sys
from sklearn.linear_model import LinearRegression

Re: Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Montag 10. Juli 2023, 09:32
von __blackjack__
@NinoBaumann: Also erst einmal sind ja ausser Pandas alle anderen Importe aus der Standardbibliothek. Und Pandas kann ja für das andere Python oder auch global installiert sein, falls es für das gleiche Python ist. Schau halt mal was in `sys.executable` steht, dann siehst Du womit das jeweils ausgeführt wird.

Re: Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Montag 10. Juli 2023, 10:37
von NinoBaumann
Meinst Du mit `sys.executable` die initconfig.h? Das ist nämlich die einzige Datei die ich finde, wenn ich danach suche.

Ich habe ja sklearn nicht separat installiert. Das war ja dabei, als ich Anaconda installiert habe. Wieso gibt es dann hier Probleme, wenn es darin enthalten ist?

Re: Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Montag 10. Juli 2023, 11:01
von __deets__
Nö, das meint schon sys.executable direkt aus dem Python Interpreter.

import sys
print(sys.executable)

an den Anfang des Skriptes stellen, und in Spyder/PowerShell vergleichen.

Re: Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Montag 10. Juli 2023, 11:13
von __blackjack__
@NinoBaumann: Man kann mehr als eine Python-Installation auf dem Rechner haben und viele IDEs legen pro Projekt ein venv an, so dass jedes Projekt seinen eigenen Satz an Modulen/Packages hat und man durch installieren oder aktualisieren von den Packages in einem Projekt nicht aus versehen Probleme bei anderen Projekten verursacht die vielleicht Probleme mit den neuen Versionen haben. Diesen Vorteil ”erkauft” man sich damit, dass man aufpassen muss das Projekt dann auch mit dem passenden Python aus dem passenden venv auszuführen.

Re: Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Montag 10. Juli 2023, 11:16
von NinoBaumann
Okay. Also über den Interpreter habe ich mir jetzt den Pfad ausgeben lassen. Wie genau vergleiche ich das jetzt mit der Powershell? Also wie komme ich an den Pfad?

Re: Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Montag 10. Juli 2023, 11:18
von __blackjack__
@NinoBaumann: Bau das in Dein Skript ein! *Das* ist wichtig. Beim Interpreter stellt sich ja wieder die gleiche Frage, ob das vielleicht nicht sogar eine dritte Python-Installation ist oder ein anderes venv als in den anderen beiden Fällen.

Re: Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Montag 10. Juli 2023, 11:43
von NinoBaumann
Okay. Wenn ich das Programm im Interpreter laufen lasse kommt dieser Pfad:
C:\Users\nbauman1\Anaconda3\python.exe
und wenn ich die Windows PowerShell laufen lasse:
C:\Users\nbauman1\AppData\Local\Programs\Python\Python310\python.exe
Das heißt die Pfade stimmen nicht überein.
Wie kann ich das beheben?

Re: Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Montag 10. Juli 2023, 11:49
von __blackjack__
@NinoBaumann: Entweder den absoluten Pfad angeben statt nur python oder die py.exe verwenden und alles entsprechend konfigurieren, dass das richtige Python gestartet wird. Da steht was in der Python-Dokumentation zum ausführen von Python-Programmen unter Windows.

Re: Python Skript mit PowerShell ausführen bringt ModuleNotFoundError

Verfasst: Dienstag 11. Juli 2023, 10:53
von NinoBaumann
Danke an blackjack und deets für die Hilfe. Hat jetzt funktioniert.