【问题标题】:venv vs virtualenv - Why does venv not use the current pip and setuptools? [duplicate]venv vs virtualenv - 为什么 venv 不使用当前的 pip 和 setuptools? [复制]
【发布时间】:2018-11-14 01:30:20
【问题描述】:

当使用python -m venv env 在python3.X 中创建新的虚拟环境时,env 不包含我所期望的pipsetuptools 版本。相反,它包含相当“旧”的版本:截至 2018 年 6 月的 pip (8.1.1)setuptools (20.7.0)

另一方面,当使用 virtualenv env(通过 pip install virtualenv 安装)时,pip 和 setuptools 软件包是最新可用的,即截至 2018 年 6 月的 pip (10.0.1)setuptools (39.2.0)

按照我的理解,venv构建虚拟环境的首选模块,因为它不需要创建 Python 解释器的新实例并使用现有模块(Linux 中的符号链接,在 Windows 中复制),无需安装任何东西(https://www.reddit.com/r/learnpython/comments/4hsudz/pyvenv_vs_virtualenv/d2s2cda)。

venvpip版本怎么和当前系统不匹配?并且使用virtualenv 的行为如此不同?

PS:

短期解决方案是在env 中使用pip install --upgrade pip。但这对我来说似乎不对。最小可行解决方案

$ python --version
Python 3.6.5
$ pip --version
pip 10.0.1 from /home/lionel/.local/lib/python3.6/site-packages/pip (python 3.6)
$ python -m venv env
$ . env/bin/activate
(env) $ # Here I am at version 8.1.1 of pip. Why did venv create its own pip,
(env) $ # instead of linking to the system one? As seen before, that was 10.0.1.
(env) $ pip install --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Uninstalling pip-8.1.1:
      Successfully uninstalled pip-8.1.1
Successfully installed pip-10.0.1
(env) $ pip list
Package       Version
------------- -------
pip           10.0.1 
pkg-resources 0.0.0  
setuptools    20.7.0 
(env) $ # Solved, now pip is the one I was expecting!

【问题讨论】:

  • 你的“python”版本是 3.6,但是你的 pip 版本是 3.5。看起来你已经以某种方式搞砸了你的环境。对于 3.6,供应商的 pip 和 setuptools 通常分别为 9.0.1 / 28.8.0(但这可能会根据编译 Python 的人而改变)。
  • 嘘!停止使用 venv,使用 pipenv。稍后谢谢我。
  • 你好 wim 和斋月!感谢您的回答! @wim:确实,pip 被 3.5 所吸引。我知道我的问题的解决方案在于我在我的 Ubuntu 上安装了 python3.5 和 python3.6。问题出现了,因为当我使用 venv 时 pip 要求更新 (You are using pip version 8.1.1, however version 10.0.0 is available.),而在使用 virtualenv 时它没有要求更新,因为当时 pip 已经是最新版本。感谢 wim 指出问题所在。
  • 卸载pip解决:**python -m pip uninstall pip**以后我会尽量忽略警告You are using pip version 8.1.1, however version 10.0.0 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
  • 当 pip 以正确的方式连接到 python 时,问题仍然存在(请参阅我的问题中的编辑): 1. 在 venv 之前,我在 venv 之后有 pip (10.0.1) 用于 python 3.6,我有 pip (8.1.1) 用于 python 3.6/

标签: python pip virtualenv ubuntu-16.04 python-venv


【解决方案1】:

不试图恢复旧线程,但这是我找到的答案,为什么在使用 venv-short answer- 时会发生这种情况-

venv 调用 ensurepip.version() 来获取版本——获取捆绑的 pip 版本。

感谢here:的原始答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    相关资源
    最近更新 更多