У меня есть такой пакетный файл для создания и активации виртуальной среды Python и установки некоторых пакетов.
создать.bat:
mkdir "%CD%\.venv"
python -m venv .venv
call .venv\Scripts\activate
python -m pip install --upgrade pip
Третья строка — это пакетный файл, запущенный с помощью команды вызова пакета. Вот что я получаю:
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
Однако, как вы можете видеть, при запуске последней строки я не вижу типичного текста подсказки, который ожидал:
...
(.venv) E:\test\> python -m pip install --upgrade pip
Он просто выводит вывод оставшихся операций. Обычно это не было бы проблемой, но одна из задач позже — скрипт Python, который запрашивает ввод, но все игнорируется и запускается без запроса.
Для справки я добавляю вывод, если я ввожу команды вручную одну за другой:
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
решение1
Я сам нашел ответ. Я не думал об этом слишком много, так как пакетный скрипт, который я вызвал, был автоматически сгенерированным скриптом из Python. Но он включал строку
@echo off
в начале. Эта команда, конечно, была все еще активна, когда она снова вернулась к моему скрипту. Решено путем переписывания скрипта на:
mkdir "%CD%\.venv"
python -m venv .venv
call .venv\Scripts\activate
@echo on
python -m pip install --upgrade pip