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