![tl;dr:为什么每次我创建新的虚拟环境时,pip 的版本都会重置为 10.0.1,并且不会自动从全局 18.0 安装中克隆?](https://linux22.com/image/139079/tl%3Bdr%EF%BC%9A%E4%B8%BA%E4%BB%80%E4%B9%88%E6%AF%8F%E6%AC%A1%E6%88%91%E5%88%9B%E5%BB%BA%E6%96%B0%E7%9A%84%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83%E6%97%B6%EF%BC%8Cpip%20%E7%9A%84%E7%89%88%E6%9C%AC%E9%83%BD%E4%BC%9A%E9%87%8D%E7%BD%AE%E4%B8%BA%2010.0.1%EF%BC%8C%E5%B9%B6%E4%B8%94%E4%B8%8D%E4%BC%9A%E8%87%AA%E5%8A%A8%E4%BB%8E%E5%85%A8%E5%B1%80%2018.0%20%E5%AE%89%E8%A3%85%E4%B8%AD%E5%85%8B%E9%9A%86%EF%BC%9F.png)
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
.
答案1
pip
创建新的虚拟环境时不会重置。当您创建新的虚拟环境时,请在此环境中执行和venv
的新安装。版本从哪里来?当您运行时,安装是该模块的责任pip
setuptools
pip
python -m venv
pip
ensurepip
它将引导新的pip
安装。您可以检查pip
与 Python 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
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)