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

标签 python pip

我正在设置虚拟环境。我收到有关过时 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)

旧版本来自哪里?

最佳答案

在任何新创建的 venv 中重新安装 Pip。 venv 的默认 pip 版本与 Python 版本相关联,并且完全独立于您可能在系统上安装的任何 pip 版本。旧版本来自 wheel file与标准库捆绑在一起 ensurepip 模块。即使没有可用的 Internet 连接,这也允许用户创建 venv,如 venv docs提到:

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


您可以通过 ensurepip.version 查看捆绑的 pip 版本。 :
>>> import ensurepip
>>> ensurepip.version()
'19.2.3'
Python 3.8.2 是 vendoring pip 19.2.3 and setuptools 41.2.0 ,与您所看到的相符。
要使用最新的 pip 版本直接创建 venv,而不是使用旧的 pip 创建它们然后升级 pip 版本,请参阅此答案:
How to get “python -m venv” to directly install latest pip version

关于python - 为什么我的 venv 使用的 pip 版本与我安装的不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61553778/

相关文章:

python - psycopg2 中的 COPY 命令

python - 为什么我的简单 python 列表在 for 循环中重置为 None ?

python - 在 macOS Sierra 上安装 pip

python - 删除_Widget 不起作用

Python 对 groupby 求和两次

python - Zope:无法访问属性装饰器下的 REQUEST

python - mysqlclient 的构建轮失败

python - 使用 pip 安装 Mayavi - 没有名为 vtk 的模块

python - 无法通过 pip 安装 tensorflow(不再)

linux - virtualenv安装linux错误