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