为什么我的venv使用的pip版本与我安装的不同

2024-06-17 17:55:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设置虚拟环境。我收到关于过时的pip(19.2)的警告,所以我在我的(macos)系统上全局更新了pip,sudo -H python3 -m pip install --upgrade pip。它似乎起了作用,但当我制作一个新的venv时,我仍然得到旧的pip版本

% pip --version           
pip 20.1 from /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)
% python3 -m pip --version
pip 20.1 from /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)
% rm -rf .venv # make sure
% python3 -m venv .venv   
% . .venv/bin/activate    
(.venv)     % python3 -m pip --version
pip 19.2.3 from /Users/marvin/.venv/lib/python3.8/site-packages/pip (python 3.8)
(.venv)     % pip --version           
pip 19.2.3 from /Users/marvin/.venv/lib/python3.8/site-packages/pip (python 3.8)

旧版本从何而来


Tags: pipfromvenvversionlibpackages虚拟环境library
1条回答
网友
1楼 · 发布于 2024-06-17 17:55:47

Pip将重新安装在任何新创建的venv中。venv的默认pip版本与Python版本相关联,并且完全独立于您在系统上安装的任何pip版本。旧版本来自与stdlib^{}模块捆绑的wheel file。这允许用户在没有可用internet连接的情况下创建venv,如^{} docs所述:

Unless the without-pip option is given, ensurepip will be invoked to bootstrap pip into the virtual environment

您可以使用^{}检查捆绑的pip版本:

>>> import ensurepip
>>> ensurepip.version()
'19.2.3'

Python3.8是currently vendoring pip 19.2.3 and setuptools 41.2.0,与您看到的内容相匹配

要直接使用最新的pip版本创建VENV,而不是使用较旧的pip创建VENV,然后升级pip版本,请参考以下答案:

How to get “python -m venv” to directly install latest pip version

相关问题 更多 >