Windowsバッチでの呼び出し後の呼び出しが表示されない

Windowsバッチでの呼び出し後の呼び出しが表示されない

Python仮想環境を作成してアクティブ化し、いくつかのパッケージをインストールするためのこのようなバッチファイルがあります

.batを作成します:

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

3 行目は、バッチの call コマンドを使用して実行されるバッチ ファイルです。結果は次のとおりです。

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

残りの操作の出力を印刷するだけです。通常、これは問題にはなりませんが、後のタスクの 1 つは入力を求める Python スクリプトですが、すべてが無視され、尋ねることなく実行されます。

参考までに、コマンドを 1 つずつ手動で入力した場合の出力を追加します。

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

関連情報