首页 > 解决方案 > 如何在 Ubuntu 18.04 上安装 python3.7 并使用 pip 创建一个 virtualenv?

问题描述

我正在尝试在 Ubuntu 18.04 上使用 python 3.7 设置标准虚拟环境(venv),使用 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-venv了(python3-venv适用于 Debian/Ubuntu 上的 python3.6)。我知道在 python 社区中已经对此进行了一些讨论,因为有多个 python 版本和/或需要 root 访问权限,以及通过apt或类似方式安装 python 模块的替代方法。

创建没有 pip ( --without-pip) 的 venv 成功,但是没有办法在新的 venv 中安装软件包,这似乎在很大程度上违背了目的。

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

标签: pythonpippython-3.7ubuntu-18.04python-venv

解决方案


我不知道这是否是最佳实践,但如果我还安装了 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


推荐阅读