Anrufe nach Anruf werden im Windows-Batch nicht angezeigt

Anrufe nach Anruf werden im Windows-Batch nicht angezeigt

Ich habe eine Batchdatei wie diese zum Erstellen und Aktivieren einer virtuellen Python-Umgebung und zum Installieren einiger Pakete

erstellen.bat:

mkdir "%CD%\.venv"
python -m venv .venv
call .venv\Scripts\activate
python -m pip install --upgrade pip

Die dritte Zeile ist eine Batchdatei, die mit dem Call-Befehl der Batchdatei ausgeführt wird. Ich erhalte Folgendes:

E:\test>create.bat

E:\test>mkdir "E:\test\.venv"

E:\test>python -m venv .venv

E:\test>call .venv\Scripts\activate
Collecting pip
  Using cached https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 19.0.3
    Uninstalling pip-19.0.3:
      Successfully uninstalled pip-19.0.3
Successfully installed pip-20.0.2

Wie Sie jedoch sehen, wird beim Ausführen der letzten Zeile nicht der typische Eingabeaufforderungstext angezeigt, den ich erwartet habe:

...
(.venv) E:\test\> python -m pip install --upgrade pip

Es wird nur die Ausgabe der verbleibenden Operationen gedruckt. Normalerweise wäre das kein Problem, aber eine der späteren Aufgaben ist ein Python-Skript, das nach Eingaben fragt, aber alles wird ignoriert und ohne Nachfrage ausgeführt.

Als Referenz füge ich die Ausgabe hinzu, wenn ich die Befehle einzeln manuell eingebe:

E:\test>mkdir "%CD%\.venv"

E:\test>python -m venv .venv

E:\test>call .venv\Scripts\activate

(.venv) E:\test>python -m pip install --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 19.0.3
    Uninstalling pip-19.0.3:
      Successfully uninstalled pip-19.0.3
Successfully installed pip-20.0.2

Antwort1

Ich habe die Antwort selbst gefunden. Ich habe nicht viel darüber nachgedacht, da das von mir aufgerufene Batch-Skript ein automatisch generiertes Skript aus Python war. Aber es enthielt die Zeile

@echo off

am Anfang. Dieser Befehl war natürlich immer noch aktiv, als er wieder zu meinem Skript zurückkehrte. Gelöst durch Umschreiben des Skripts zu:

mkdir "%CD%\.venv"
python -m venv .venv
call .venv\Scripts\activate
@echo on
python -m pip install --upgrade pip

verwandte Informationen