tl;dr:新しい仮想環境を作成するたびに、pipバージョンが10.0.1にリセットされ、グローバル18.0インストールで自動的に複製されないのはなぜですか?

tl;dr:新しい仮想環境を作成するたびに、pipバージョンが10.0.1にリセットされ、グローバル18.0インストールで自動的に複製されないのはなぜですか?

tl;dr:新しい仮想環境を作成するたびに、pipバージョンが10.0.1にリセットされ、グローバル18.0インストールで自動的に複製されないのはなぜですか?

新しい仮想環境を作成するたびに、環境が古くなっpipたというメッセージが表示されます。私は走る

$ pip install --upgrade pip

次の出力を取得します。

Collecting pip
  Using cached https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 10.0.1
    Uninstalling pip-10.0.1:
      Successfully uninstalled pip-10.0.1
Successfully installed pip-18.0

pip -V仮想環境の外部で実行すると返されます。

pip 18.0 from /usr/lib/python3.7/site-packages/pip (python 3.7)

したがって、新しい仮想環境を作成するときにのみ古いバージョンが作成されます。

これはPython仮想環境モジュールの機能ですか?

レコード上に新しい仮想環境を作成するために実行するコマンドは次のとおりです。

$ python -m venv <venv>

実行してインストールしました。

$ pacman -S python python-pip

Archで実行しましたが、出力python -VPython 3.7.0

答え1

pip新しい仮想環境の作成時にリセットされません。新しい仮想環境を作成する場合は、venvこの環境で新しいインストールを実行してください。バージョンはどこから出ますか?実行時のインストールはモジュールの責任です。pipsetuptoolspippython -m venvpipensurepip新しいインストールが起動しますpippipPython 3.7にバンドルされているバージョンを確認できます。

$ python3 -c "import ensurepip; print(ensurepip.version())"
10.0.1

モジュールは標準ライブラリの一部であるため、このコンテンツを直接更新または変更することはできません。 Python 3.7がリリースされたとき、最新pipバージョンは10.0.1だったので、バンドルされています(関連質問)。バージョン18は後でリリースされる予定です。次に、次のPythonバージョン(3.7.1)にアップデートできます。

代替案:使用virtualenv

pip新しい仮想環境に最新バージョンをインストールするには、次のように切り替えますvirtualenv

$ pip install --user virtualenv

または、次のコマンドを使用してシステム全体にインストールしますpacman

$ pacman -S python-virtualenv

virtualenvPythonよりも頻繁に更新されるため、最新バージョンは最新のパッケージをインストールします。使用例:

$ virtualenv myenv --python=python3 --quiet
$ source myenv/bin/activate
(myenv) $ pip --version
pip 18.0 from /Users/hoefling/.virtualenvs/myenv/lib/python3.7/site-packages/pip (python 3.7)

関連情報