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 -V
是Python 3.7.0
.
pip
创建新的虚拟环境时不会重置。当您创建一个新的虚拟环境时,在这个环境中venv
执行一个新的安装。版本从哪里来?当您运行时,安装是引导新安装的模块的责任。您可以查看Python 3.7 捆绑的版本:pip
setuptools
pip
python -m venv
pip
ensurepip
pip
pip
这不是您可以自己更新或修改的内容;该模块是标准库的一部分。Python 3.7 发布时,最新
pip
的是 10.0.1 版本,所以它被捆绑了(相关问题)。版本 18 稍后发布。下一次,它可能会在下一个 Python 版本(3.7.1)中更新。替代方案:使用
virtualenv
如果您希望
pip
在全新的虚拟环境中安装最新版本,您可以切换到virtualenv
:或使用安装系统范围
pacman
:virtualenv
比 Python 更新的更频繁,所以最新版本安装了最新的包。使用示例: