Eu tenho um arquivo em lote como este para criar e ativar um ambiente virtual python e instalar alguns pacotes
criar.bat:
mkdir "%CD%\.venv"
python -m venv .venv
call .venv\Scripts\activate
python -m pip install --upgrade pip
A terceira linha é um arquivo em lote executado usando o comando de chamada do lote. O que eu recebo é isto:
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
No entanto, como você pode ver, ao executar a última linha não vejo o texto de prompt típico que esperava:
...
(.venv) E:\test\> python -m pip install --upgrade pip
Ele apenas imprime a saída do restante das operações. Normalmente isso não seria um problema, mas uma das tarefas posteriores é um script Python que solicita entrada, mas tudo é ignorado e executado sem solicitação.
Para referência, estou adicionando a saída se digitar os comandos manualmente, um por um:
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
Responder1
Eu mesmo encontrei a resposta. Não pensei muito nisso, pois o script em lote que chamei era um script gerado automaticamente em Python. Mas incluía a linha
@echo off
no inicio. É claro que este comando ainda estava ativo quando retornou ao meu script novamente. Resolvido reescrevendo o script para:
mkdir "%CD%\.venv"
python -m venv .venv
call .venv\Scripts\activate
@echo on
python -m pip install --upgrade pip