21

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?

21

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

sudo apt-get install python3.9-venv
2
  • Logical suggestion, however running the command resulted in E: Unable to locate package python3.9-venv Jan 20 at 12:54
  • 1
    @MatejaPetrovic Install deadsnakes ppa first: sudo add-apt-repository ppa:deadsnakes/ppa Aug 8 at 17:28
4

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.

1

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

1

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
1

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
  • What is your machine running?
    – muru
    May 17 at 13:48
  • Works for me on Amazon Linux AMI / RHEL Fedora! Jul 30 at 23:18
  • But virtualenv is not the same as venv.
    – wovano
    Oct 19 at 16:41
  • BTW: I think that python3.7 -m virtualenv venv does the same as your command (but is easier, IMHO).
    – wovano
    Oct 19 at 16:43
0

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!

New contributor
giwyni is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.