我正在尝试在Ubuntu 18.04上使用python 3.7建立一个标准的virtualenv,使用pip(或某种方式在virtualenv中安装软件包)。安装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
)的virtualenv成功,但是然后就没有办法在新的virtualenv中安装软件包,这似乎在很大程度上打败了目的。
那么在18.04上使用virtualenv安装和使用python3.7的接受“最佳实践”方法是什么?
我不知道它是否是最佳实践,但是如果我也安装了python3-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
那样运行无符号脚本。