如何在Ubuntu 18.04上安装Python3.7并使用pip创建虚拟环境?

38
我想在Ubuntu 18.04上使用python 3.7和pip(或其他安装包的方式)设置一个标准的虚拟环境(venv)。看起来安装Python3.7的标准方式是:
% sudo apt install python3.7 python3.7-venv
% python3.7 -m venv py37-venv

但第二个命令失败了,出现以下信息:

由于 ensurepip 不可用,虚拟环境无法成功创建。在 Debian/Ubuntu 系统上,您需要使用以下命令安装 python3-venv 软件包。

apt-get install python3-venv

在该命令中,您可能需要使用sudo。安装python3-venv软件包后,请重新创建虚拟环境。

失败的命令:['/py37-venv/bin/python3.7','-Im','ensurepip', '--upgrade','--default-pip']

这是正确的,此Python版本未安装ensurepip或pip。我已经安装了python3.7-venvpython3-venv用于Debian / Ubuntu上的python3.6)。我了解由于存在多个Python版本和/或需要root访问以及通过apt或类似方式安装Python模块的替代方法,因此在Python社区中已经就此进行了一些讨论。

使用--without-pip参数创建没有pip的venv成功,但随后无法在新的venv中安装软件包,这在很大程度上破坏了其目的。

那么,在18.04上安装和使用python3.7的venv的“最佳实践”是什么?


你是否安装了Python 3.7?如果是,请修复你的主题行。然后,你运行的命令的完整输出是什么?最好不要缩写,而是逐字引用。这样可以使其可搜索(在提问之前你已经做到了,对吧?)此外,Python本身并不需要venv支持,所以也许你需要安装一些其他东西... - Ulrich Eckhardt
1
Python3.7已经成功安装,但是'pip'和任何虚拟环境系统都没有安装。因此,我的问题中的"and"部分没有得到满足;我认为问题文本仍然有效。如果您认为有用的话,我会更新问题并提供命令的完整输出。 - GaryO
1
获取pip:curl -O https://bootstrap.pypa.io/get-pip.py,安装pip:sudo python get-pip.py - racket99
1
安装virtualenv:pip install virtualenv,使用方法:virtualenv --python=<path/to/python/> /path/to/venvsource venv/bin/activate。你应该在提示符中看到你的虚拟环境名称为(venv)。 - racket99
4
尽管这不是一个答案,但在我看来,“python3.7-venv” 主要是 “python3.6-venv”的复制品,包括系统“pip”检查。然而,在 Ubuntu Bionic 中不存在“python3.7-pip”软件包,导致 Python 3.7 没有系统的“pip”。总体而言,这对我来说看起来像是 Ubuntu 的问题,应该得到解决。 - hoefling
显示剩余2条评论
2个回答

79

我不知道这是否是最佳实践,但如果我也安装python3-venv和python3.7-venv,那么一切都能正常工作(在新的Debian buster docker镜像上测试过):

% sudo apt install python3.7 python3-venv python3.7-venv
% python3.7 -m venv py37-venv
% . py37-venv/bin/activate
(py37-venv) % 

请注意,它也无需安装所有python3.6,因此我不能完全说我喜欢它,但至少它可以工作,并且不需要像get-pip.py那样运行未签名的脚本。


这个回答没有解决原始问题:Q要求Ubuntu(“bionic”)-18.07,而答案则谈到了另一个发行版Debian(“buster”)-10.0。与python3venv相关的问题高度敏感: a)我们所讨论的特定Debian / Ubuntu版本, b)要安装的venv是该发行版发布的默认版本还是旧版本/新版本,以及 c)/etc/apt/sources.list中的任何自定义apt-repos。 - ankostis
如何在哪里安装Python3.7、Python3-venv和Python3.7-venv包,以便手动安装apy?我之所以问这个问题,是因为我无法使用互联网连接的yum,需要从某个地方下载它,然后进行传输。 - haneulkim

-8
sudo apt install python3-venv
python3 -m venv env

5
请在回答中始终提供上下文,而不仅仅是粘贴代码。请参阅此处了解更多详细信息。 - gehbiszumeis
这是一个错误的解决方案,您使用了默认Python设置虚拟环境,在Ubuntu 18.04上,默认的Python版本是Python3.6而不是Python3.7。 - Yuri Baburov
不仅是错误的,而且基本上与正确答案相同,只是有用的部分被删除了很多个月。 - Phil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接