70

I just installed python3.7 on my 18.04LTS via the deadsnakes ppa:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.7 -y

Now I want to create a virtual environment with python3.7 -m venv env but I get

Error: Command '['/path/to/desired/env/bin/python3.7', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

python3 -m venv env0 worked fine before.

Why does this happen?
What can I do to create a virtual environment for python3.7 on Ubuntu 18.04LTS?

user2740
  • 1,147

8 Answers8

115

I am using python3.9. The command below solved the issue for me:

sudo apt-get install python3.9-venv
Jumshud
  • 1,251
6

I realised that python3.7 comes with bionic and removed ppa:deadsnakes/ppa as well as python3.7. After installing it regularly, I got the following:

$ 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 was already installed, but python3.7-venv wasn't, and with that I could create the environment.

user2740
  • 1,147
4

On my machine I've noticed that while python -m venv does not work, this command does:

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

Edit:

There is a more modern version of this command these days. It should work on python3.7 and up.

python3.7 -m venv venv

As mentioned in the commands, this command should also work:

python3.7 -m virtualenv venv
4

This worked for me (Thx Joseph..):
sudo apt-get install python3.10-dev
sudo apt-get install python3.10-venv
After this: python3.10 -m venv venv works fine!

giwyni
  • 149
2

Use this apt-get install python3.7-dev python3.7-venv to install python3.7-dev and python3.7-venv packages and you are good to go

0

This error occurred to me in a very different scenario. Hope it ends up helping someone.

I was working on my ntfs drives and they were being auto-mounted at boot in /etc/fstab using ntfs-3g with root permissions by default.

When trying to create virtualenv it showed me the same error. This was fixed by adding uid and gid particular flags in /etc/fstab

UUID=<uuid> <mount-path> ntfs <other-flags>,uid=<uid of user>,gid=<gid of user> 0 0
0

Maybe it's useful. Under WSL I had to:

$ sudo python3.8 -m venv venv
0

I had python 2.7 on my system, and the default pip command was pointing to that installation. I think that's why python3 -m venv DIR failed. This, however, worked:

sudo pip3 install virtualenv
python3 -m virtualenv --python=python3 DIR
LexH
  • 101