为什么每次我创建一个新的虚拟环境而不自动从我的全球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
我通过运行
$ pacman -S python python-pip
我在Arch中运行它,python -V
的输出是Python 3.7.0
。
发布于 2018-08-25 16:11:05
创建新的虚拟环境时不会重置pip
。创建新的虚拟环境时,venv
将在此环境中执行pip
和setuptools
的新安装。pip
版本从何而来?当您运行python -m venv
时,pip
的安装由模块ensurepip
负责,该模块引导一个新的pip
安装。您可以检查与Python3.7捆绑的pip
版本:
$ python3 -c "import ensurepip; print(ensurepip.version())"
10.0.1
这不是您可以自己更新或修改的东西;模块是标准库的一部分。当Python3.7发布时,最新的pip
版本为10.0.1,因此它被捆绑(相关问题)。版本18是稍后发布的。下一次,它可能会在下一个Python发行版(3.7.1)中更新。
virtualenv
如果希望在新的虚拟环境中安装最新的pip
,可以切换到virtualenv
:
$ pip install --user virtualenv
或者使用pacman
安装系统:
$ pacman -S python-virtualenv
virtualenv
比Python更新得更频繁,因此最新版本安装了最新的软件包。用法示例:
$ 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)
https://unix.stackexchange.com/questions/464671
复制相似问题