'Can't "activate" virtualenv
New to running Python in virtual environments, messing with Django, and can't activate a virtual environment.
Spent the last 4 hrs trying to activate a virtual env (venv) on local terminal/VS Code with no luck.
Avoided "sudo pip install virtualenv" as I was trying to avoid installing as root and having different directory path, etc.
"pip install virtualenv" output:
Collecting virtualenv
Using cached virtualenv-20.0.31-py2.py3-none-any.whl (4.9 MB)
Requirement already satisfied: six<2,>=1.9.0 in /Users/garrettpinto/Library/Python/3.8/lib/python/site-packages (from virtualenv) (1.15.0)
Requirement already satisfied: appdirs<2,>=1.4.3 in /Users/garrettpinto/Library/Python/3.8/lib/python/site-packages (from virtualenv) (1.4.4)
Requirement already satisfied: filelock<4,>=3.0.0 in /Users/garrettpinto/Library/Python/3.8/lib/python/site-packages (from virtualenv) (3.0.12)
Requirement already satisfied: distlib<1,>=0.3.1 in /Users/garrettpinto/Library/Python/3.8/lib/python/site-packages (from virtualenv) (0.3.1)
Installing collected packages: virtualenv
Successfully installed virtualenv-20.0.31
"virtualenv venv" output:
created virtual environment CPython3.8.5.final.0-64 in 416ms
creator CPython3Posix(dest=/Users/garrettpinto/Desktop/rp-portfolio/distribution/venv, clear=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/garrettpinto/Library/Application Support/virtualenv)
added seed packages: pip==20.2.2, setuptools==49.6.0, wheel==0.35.1
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
"source venv/bin/activate" returns nothing
"./venv/bin/activate" output:
zsh: permission denied: ./venv/bin/activate
"sudo ./venv/bin/activate" output:
sudo: ./venv/bin/activate: command not found
Thoughts?
Solution 1:[1]
Welcome to Stack Overflow.
There's a lot of confusing information out there on virtual environments, because of how they have evolved. Since Python 3.3, the venv module is available with Python as part of the standard library to create virtual environments, and if you're just getting started, I'd recommend learning it first. There's nothing extra to install after you've installed Python 3.8.
From your project's home directory in the VSCode terminal, try this:
python3 -m venv venv
. venv/bin/activate
pip install Django
Here's what the three lines do:
- Call the Python module
venvand create a new virtual environment in the directoryvenv - Run the script to activate the virtual environment that is located in the path
venv/bin/activate - Now that the
venvis activated, install Django.
After the first time install, you'll just need to repeat step (2) to activate it. You can also point VSCode to automatically start it when you fire up the IDE. You can click the bar at the bottom of VSCode after installing the Python plugin to select the Python version in the venv you've created. Good luck!
Update:
Here's an example of it working in zsh on my machine:
$ zsh
% python3 --version
Python 3.8.2
% python3 -m venv venv
% . venv/bin/activate
(venv) % pip install Django
Collecting Django
Collecting pytz (from Django)
Collecting asgiref~=3.2.10 (from Django)
Collecting sqlparse>=0.2.2 (from Django)
Installing collected packages: pytz, asgiref, sqlparse, Django
Successfully installed Django-3.1.1 asgiref-3.2.10 pytz-2020.1 sqlparse-0.3.1
Solution 2:[2]
I was stuck on this for a good while but you can try venv:
python -m venv virtualenvname
#to activate the virtual environment
source virtualenvname/Scripts/activate
Solution 3:[3]
Solution of the problem of virtual environment created but not activated.
to make activate just add a space between .(dot) and your venv path. i,e $ . yourvirtualenv/bin/activate Hope this will work. But not use like: $ yourvirtualenv/bin/activate or $ /yourvirtualenv/bin/activate Here is my command and the output: admin@osboxes:~/pysrc$ . my_env/bin/activate (my_env) admin@osboxes:~/pysrc$
Output of the wrong command: admin@osboxes:~/pysrc$ my_env/bin/activate bash: my_env/bin/activate: Permission denied admin@osboxes:~/pysrc$ sudo my_env/bin/activate [sudo] password for admin: sudo: my_env/bin/activate: command not found admin@osboxes:~/pysrc$ my_env/bin/activate bash: my_env/bin/activate: Permission denied admin@osboxes:~/pysrc$
Solution 4:[4]
I just prefer using 'venv' as a name for all my virtual environments, so always I'll use the same command to activate environments in my machine.
Try:
# Create the virtual environment inside your project's folder
$ python3 -m venv venv
#Activate it
$ source venv/bin/activate
As I need to change projects and environments quite often, I created two alias in the system (ubuntu 20.04), one for creating and another to activate it, as shown above:
To create I chose 'venv' as my alias name. Before creating I certified that an existing 'venv' folder was deleted.
venv='rm -rf venv && python3.9 -m venv venv'
To activate I chose 'activate' as my alias name
activate='source venv/bin/activate'
Window commands to create and activate are a little different as you can notice in this answer.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Sadia Anjum |
| Solution 3 | Mohammad Ramzan Hossain |
| Solution 4 | Gabriel Braico Dornas |
