Thursday, October 28, 2021

[SOLVED] I used pip3 to install virtualenv but I can't create venv and also I can't uninstall virtualenv

Issue

I'm using Linux Mint 20.2 with two directories / and /home.

I used the following command to install virtualenv:

>>> sudo pip3 install virtualenv

It worked fine and it installed in the following path:

>>> virtualenv --version
virtualenv 20.0.17 from /usr/lib/python3/dist-packages/virtualenv/__init__.py

But when I tried to create an environment I got the following error:

>>> python3 -m venv article
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 install python3.8-venv

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

Failing command: ['/home/username/article_tools/article/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']

When I tried to uninstall it to install it using [b]sudo apt install python3.8-venv[/b], I got the following error:

>>> sudo pip3 uninstall virtualenv
Found existing installation: virtualenv 20.0.17
Not uninstalling virtualenv at /usr/lib/python3/dist-packages, outside environment /usr
Can't uninstall 'virtualenv'. No files were found to uninstall.

How can I fix it? By fix, I mean installing virtualenv in a way that I don't get such errors.


Solution

The fundamental problem here seems to be that you are mixing up two different packages.

Python 3 comes with a built-in virtual environment module venv which is however not installed by default on Debian-based platforms. Like the error message says, apt-get install -y python3-venv will install this package, which you can then use with python3 -m venv.

virtualenv is a separate third-party package which you invoke with the command virtualenv. It's not a bad alternative, but if you are only just learning, I would suggest you simply ignore it for the time being.



Answered By - tripleee