【问题标题】:Where is the standard library in python virtual environment?python虚拟环境中的标准库在哪里?
【发布时间】:2017-08-24 05:04:26
【问题描述】:

我使用的是默认安装 python 3.5 的 Ubuntu 系统。

当我使用venv 模块创建虚拟环境时,我在虚拟环境中找不到标准库,只能找到python 解释器的二进制文件。但是,当我切换到使用这个虚拟环境时,我可以在我的 python 脚本中导入标准库模块。

那么venv 是如何工作的呢?新创建的虚拟环境是否只是使用系统python的标准库?如果是这样,如果我想创建一个完全独立的虚拟环境怎么办? venv 模块可以实现这一点吗?顺便说一句,我之前用过conda。 conda 可以根据系统版本使用不同的python创建虚拟环境。 venv 可以做这个工作吗?

【问题讨论】:

  • import sys; print(sys.path) 这将显示 python 在哪里寻找所有模块。您将始终获得 Python 标准模块,但您可能有权访问已安装的系统模块,也可能无权访问 - 这是虚拟环境配置的一部分。
  • @AChampion 是venv创建的虚拟环境在全局系统python安装中看起来是标准库模块。我认为venv 的这种行为很奇怪。

标签: python conda virtual-environment


【解决方案1】:

这是因为venv 使用系统标准库。如果您更新实际的 Python,这将是一个问题,因为那里可能会发生版本不匹配。看看下面的链接你会得到更多的信息。
https://virtualenv.pypa.io/en/stable/

【讨论】:

  • 因此,在虚拟环境中,我们有一个独立的 python 解释器和独立的站点包,但是一个依赖于系统 python 的标准库。对吗?
  • 是的,完全正确。所以,如果你更新你的 Python,那么你在虚拟环境中开发的代码可能会遇到版本问题
  • 我同意你的看法。我认为创建这样的虚拟环境很奇怪。为什么venv 不在虚拟环境中创建一个独立的标准库以避免潜在的版本问题?也许开发团队对venv模块的行为有特殊的考虑?
猜你喜欢
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 2020-10-01
  • 1970-01-01
  • 2022-10-07
  • 2019-09-24
  • 2020-09-02
相关资源
最近更新 更多