Seite 1 von 1

Python per Kommandozeile instalieren

Verfasst: Montag 2. März 2020, 17:39
von JakobDev
Ich versuche gerade, Python per Kommandozeile zu installieren, damit ich es im CI von GitLabnutzen kann. Bisher sieht mein Job so aus:

Code: Alles auswählen

build_exe:
    stage: build
    script:
        - Invoke-WebRequest -Uri https://www.python.org/ftp/python/3.7.6/python-3.7.6-amd64.exe -OutFile python-installer.exe
        - .\python-installer.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0
        - python --version
        - pip
    only:
        - tags
    tags:
        - windows
Es wird testweise Python und pip aufgerufen, um zu schauen, ob alles funktioniert. Doch beim Aufruf von python kommt schon die Fehlermeldung, dass der Befehl nicht existieren würde. Der Installer ist durchgelaufen, ohne was auszugeben. Hat da wer eine Idee?

Re: Python per Kommandozeile instalieren

Verfasst: Montag 2. März 2020, 17:54
von __deets__
Ich behaupte mal, dass der Installer zwar gelaufen ist, aber die Aenderung der Pfad-Variable sich erst nach einem Neustart des Kommandozeileninterpreters zeigen wuerde. Ich bin kein Experte in GitLab, aber ggf. kannst du so eine vorbereitende Massnahme in einen frueheren Schritt verlagern. Oder besser noch gleich (so macht man's unter Linux zumindest) einen Container mit den Tools schon installiert benutzen.

Re: Python per Kommandozeile instalieren

Verfasst: Montag 2. März 2020, 19:16
von JakobDev
Ich habe folgenden Befehl gefunden.

Code: Alles auswählen

$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User") 
Damit soll es möglich sein, den PATH neuzuladen, was offenbar auch bei vielen funktioniert. Ich habe den Befehl zwischen den Befehl zum installieren und dem python Befehl gepackt. Leider wird Python immer noch nicht gefunden.

An die Container hatte ich auch schon gedacht, aber ich habe keine Ahnung, wie das mit Windows funktioniert.

Hat sonst noch jemand eine Idee?

Re: Python per Kommandozeile instalieren

Verfasst: Dienstag 3. März 2020, 17:58
von JakobDev
Weiß vielleicht wer den absoluten Pfad, unter dem Python hier installiert wird?

Re: Python per Kommandozeile instalieren

Verfasst: Dienstag 3. März 2020, 18:01
von __deets__
Warum schaust du nicht einfach nach? Wenn du den Installer genau so laufen laesst auf deinem lokalen System, dann sollte dabei doch der gleiche Ort herauskommen. Zumindest kann man die Hypothese mal pruefen. Dann gibt's ggf. weitere Parameter, mit denen du den Installations-Ort kontrollieren kannst (aenhlich zu den anderen Angaben). Und last but not least kannst du natuerlich auch ein skript schreiben, dass find auf der Instanz ausfuehrt, und dir mal anschauen, wo die python.exe gelandet ist.

Re: Python per Kommandozeile instalieren

Verfasst: Mittwoch 4. März 2020, 18:02
von JakobDev
Hab es jetzt hinbekommen. Die Lösung war, erst auf das Ende der Installation zu warten. Das geschieht nicht automatisch. Hier noch mal der komplette Job, für diejenigen, die es interessiert:

Code: Alles auswählen

stages:
    - build

build_exe:
    stage: build
    script:
        - Invoke-WebRequest -Uri https://www.python.org/ftp/python/3.7.6/python-3.7.6-amd64.exe -OutFile python-installer.exe
        - .\python-installer.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0 | Out-Null
        - $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User") 
        - pip install -r requirements.txt
        - pip install cx-Freeze
        - python build_exe.py build
    artifacts:
        paths:
            - build
    only:
        - tags
    tags:
        - windows