错误:命令 '['/path/to/env/bin/python3.7', '-Im', 'ensurepip', '--upgrade', '--default-pip']' 返回非零退出状态 1

我刚刚通过deadsnakes ppa在我的18.04LTS上安装了Python3.7。
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.7 -y

现在我想用python3.7 -m venv env创建一个虚拟环境,但是出现了问题。
Error: Command '['/path/to/desired/env/bin/python3.7', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

python3 -m venv env0之前运行得很好。

为什么会发生这种情况?
我该如何在Ubuntu 18.04LTS上创建一个适用于python3.7的虚拟环境?

8个回答

我正在使用Python 3.9版本。下面的命令解决了我的问题:
sudo apt-get install python3.9-venv

1逻辑建议,然而运行该命令导致出现E: 无法定位软件包 python3.9-venv - Mateja Petrovic
2@MatejaPetrovic 首先安装deadsnakes ppa:sudo add-apt-repository ppa:deadsnakes/ppa - Joel G Mathew
@JoelGMathew python3.7-venv软件包没有可安装的候选版本。即使使用deadsnakes也是如此。 - Gulzar
@Gulzar 确实存在。请确保首先运行 sudo apt-get update 来刷新您的本地软件包列表。 - Cerin
@Cerin 我后来发现问题是因为旧版的Ubuntu。请参考这个链接 - Gulzar
我使用的是3.11.6版本,也遇到了同样的问题。这个方法立刻解决了我的问题。感谢您的帖子。 - undefined

我意识到Python3.7自带Bionic并删除了ppa:deadsnakes / ppa以及Python3.7。在正常安装后,我得到了以下结果:
$ python3.7 -m venv v2
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: ['/home/.../v2/bin/python3.7', '-Im', 'ensurepip', '--upgrade', '--default-pip']

python3-venv已经安装了,但是python3.7-venv没有安装,而我需要它来创建环境。


дҪ еҸҜд»ҘдҪҝз”Ёpython3.7 -m venv --without-pip v2е‘Ҫд»ӨжқҘеҲӣе»әиҷҡжӢҹзҺҜеўғпјҢиҖҢж— йңҖй»ҳи®Өе®үиЈ…pipгҖӮ - cserpell

这对我有用(谢谢Joseph..):
sudo apt-get install python3.10-dev
sudo apt-get install python3.10-venv
之后: python3.10 -m venv venv 运行正常!

在我的电脑上,我注意到虽然 python -m venv 不起作用,但这个命令可以:

virtualenv --python=$(which python3.7) venv

编辑:

现在有一个更现代化的版本的这个命令。它应该适用于Python3.7及以上版本。

python3.7 -m venv venv

如命令中所提到的,这个命令也应该可以运行:
python3.7 -m virtualenv venv

你的机器在运行什么? - muru
在亚马逊 Linux AMI / RHEL Fedora 上对我来说没问题! - Kartik Chugh
但是virtualenvvenv不是一样的。 - wovano
顺便说一句:我认为 python3.7 -m virtualenv venv 命令与你的命令相同(但在我看来更容易)。 - wovano
1我真的不明白为什么python3 -m venv venv不起作用,而python3 -m virtualenv venv在我的情况下有效。我正在使用Python 3.9.7在Pure OS 10(基于Linux的操作系统)上。 - vpz

使用以下命令apt-get install python3.7-dev python3.7-venv 安装python3.7-dev和python3.7-venv软件包,然后你就可以开始使用了。

这个错误发生在一个非常不同的情况下。希望它能帮助到别人。
我正在处理我的ntfs驱动器,它们在启动时会自动挂载到/etc/fstab中,并默认使用ntfs-3g和root权限。
当尝试创建虚拟环境时,它显示了相同的错误。通过在/etc/fstab中添加uid和gid特定标志来解决了这个问题。
UUID=<uuid> <mount-path> ntfs <other-flags>,uid=<uid of user>,gid=<gid of user> 0 0

也许这很有用。在WSL下,我必须:
$ sudo python3.8 -m venv venv

帮我解决了。可惜被踩了。 - Josh Greifer

我系统上安装了Python 2.7,并且默认的pip命令指向该版本。我认为这就是为什么python3 -m venv DIR失败的原因。不过,下面这个命令可以正常运行:
sudo pip3 install virtualenv
python3 -m virtualenv --python=python3 DIR

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community