【问题标题】:Rationale for having having to install the python3-venv package必须安装 python3-venv 包的理由
【发布时间】:2019-01-24 20:42:38
【问题描述】:

在我提问之前你应该知道的一些事情:

  • 我对 Linux 和 Python 都完全陌生,很难理解官方文档和技术答案(但迫切希望深入理解两者)
  • 我正在运行elementary OS 0.4.1 Loki
  • 我的 Python 3 版本是 3.5.2。当我在 venv 模块上搜索 python 3.5.2 的在线文档时,我得到了 3.5.6 版本的文档。我不明白为什么没有 .2 版本的文档。

所以,这是我的问题。我试图使用 venv 创建一个虚拟环境,然后继续进行:

根据 Python 的 3.5.6 venv 模块文档,使用命令pyvenv /path/to/new/virtual/environment 创建虚拟环境。我尝试了该命令并得到:

当前未安装程序“pyvenv”。您可以通过键入以下命令进行安装:sudo apt install python3-venv

然后我在文档中搜索了较新的 Python 版本并尝试了新的 venv 命令 python3 -m venv /path/to/new/virtual/environment 并得到以下结果:

没有成功创建虚拟环境,因为 ensurepip 不可用。在 Debian/Ubuntu 系统上,您需要使用以下命令安装 python3-venv 包。 apt-get install python3-venv

在这两种情况下,解决方案似乎都是安装 python3-venv。我的问题是:我通过安装 python3-venv 到底安装了什么:难道 venv 不是标准库的一部分吗?此外,如果它是 Python 模块,为什么我必须通过 apt-get 安装它?据我了解,标准库模块是导入的,而不是安装的;并且标准库外部的模块是通过 pip 安装的。与此相关,为什么ensurepip不可用?

我的问题的第二部分:如果安装 python3-venv 是要走的路,那么在 Python 3.5.2 中使用 venv 创建虚拟环境的正确方法是什么:pyvenv my_virtual_environmentpython3 -m venv my_virtual_environment

【问题讨论】:

  • 正要问同样的问题。我不知道为什么我们必须安装 python3-venv 才能使用这个“核心”模块。在那种情况下,是什么让 venv 优于 virtualenv?您必须同时安装两者。

标签: python-3.x ubuntu python-venv


【解决方案1】:

不用担心文档与 micro version number 不匹配 - 该位置的增量仅用于错误修复,因此文档保持不变。

您的问题很有趣,因为venv 确实不是可选模块。我的猜测是你的操作系统附带的 Python 版本(或者你自己安装的)似乎带有一个精简的或没有标准库。例如,python3.5-minimal 包似乎没有它。你的 Python 在标准库中有其他模块吗?

编辑:另见this question

安装可以描述为“将文件放到计算机上的正确位置”。然而,导入一个模块意味着你告诉 Python 提供一些功能。要导入模块,必须安装它(例如,在我的计算机上安装 Python 3 的 /usr/lib/python3.5),安装附加模块的一种方法是通过 apt

python3 -m venv my_virtual_environment 方法也应该在 3.5 中工作,并且是面向未来的版本,所以你可能应该使用它。

【讨论】:

  • 感谢您的回复@nnnmmm!我不知道 python3.5-minimal 包。我点击了链接,点击了 amd64 并找到了这个文件列表: /usr/bin/python3.5 /usr/bin/python3.5m /usr/share/binfmts/python3.5 /usr/share/doc/python3 .5-minimal/README.Debian /usr/share/doc/python3.5-minimal/changelog.Debian.gz /usr/share/doc/python3.5-minimal/copyright /usr/share/man/man1/python3 .5.1.gz /usr/share/man/man1/python3.5m.1.gz 所以我想验证 venv 是否包含在 python3.5-minimal 中,我必须搜索这些目录,对吗?
  • 我无法回答您关于标准库中包含的其他模块的问题,因为我不知道怎么看。你介意给我解释一下吗?再次感谢:)
  • 我还有一个问题,对不起!您说 apt 是安装附加模块的一种方法;还有什么其他方法?
  • 您只需打开 Python 并输入 import <modulename> 即可进行测试。这些已经是 python3.5-minimal 包中包含的所有文件 - 它不包含任何模块。但是,我并不是说您(仅)安装了该特定软件包,只是这可能是您最终遇到像您这样的情况的一种方式。 pip 或 conda 是其他方法。我现在要睡觉了,所以直到明天我才能回答任何问题,抱歉!
猜你喜欢
  • 2016-09-20
  • 2022-12-17
  • 2017-03-08
  • 2020-08-15
  • 1970-01-01
  • 2016-03-20
  • 2017-12-24
  • 2021-04-06
  • 2019-04-09
相关资源
最近更新 更多