How do I create a virtual environment for a specified version of Python?
-
12Just mentioning that you can do this using virtualenvwrapper too.– biasCommented May 28, 2010 at 3:25
-
25Worth noting that in python 3, there is a built-in virtualenv equivalent: venv.– naught101Commented Sep 1, 2014 at 12:47
-
8Is it not possible to switch python version in the current environment without creating a new environment?– Charlie ParkerCommented Aug 28, 2016 at 23:38
-
youtube.com/watch?v=N5vscPTWKOk This video recommended in virtualenv documentation goes over the entire process step.– AnandShivaCommented Dec 26, 2020 at 8:58
-
2whenever i'm using sudo inside an already created virtual env to install some utilities like docker-compose it is picking the root python and pip version(3.6), not the one with which the virtual environment was created(3.7). Why is this so? but when I'm doing the python version inside virtual env. it is coming correctly (3.7).– y_159Commented Sep 21, 2022 at 11:51
42 Answers
NOTE: For Python 3.3+, see The Aelfinn's answer below.
Use the --python
(or short -p
) option when creating a virtualenv instance to specify the Python executable you want to use, e.g.:
virtualenv --python="/usr/bin/python2.6" "/path/to/new/virtualenv/"
-
179I figured I'd mention that this works for virtualenvwrappers too: mkvirtualenv -p python2.6 env– biasCommented May 28, 2010 at 3:24
-
113I'm missing something here - doesn't this require that 2.6 already be installed on the system? I thought the point of virtualenv was that I could have a version of python other than the main one (in my case, 2.4 on CentOS). I was assuming I could install virtualenv, then install Python 2.6 under it for packages in the env to make use of?– John CCommented May 24, 2011 at 14:31
-
54@John yes, you are. That isn't the point of virtualenv: the point of that is to create a sandboxed environment for Python. You will need to install that version first - you can install it locally for your user, though. Commented May 24, 2011 at 14:47
-
10@JohnC You can use pythonbrew to install alternative pythons.– ashwoodsCommented Dec 1, 2011 at 22:03
-
81If you are a tad lazy:
virtualenv -p `which python2.6` <path/to/new/virtualenv>
– blazeCommented Oct 16, 2013 at 0:57
Since Python 3.3, the documentation suggests creating the virtual environment using stdlib:
python3 -m venv "my_env_name"
Also, if we want a particular version of python, lets say 3.6, then we can use
python3.6 -m venv "my_env_name"
Make sure to install the referenced version of Python along with your existing system Python.
-
19Glad you pointed that out, it needs more promotion. One minor nit: they are now advocating running it as
python3 -m venv <envname>
to prevent needing stub scripts for everything. Commented Nov 20, 2016 at 16:08 -
7In fact the
pyvenv
script is deprecated in Python 3.6+, though the underlyingvenv
module itself is not. So usepython 3 -m venv <myenvname>
as @PaulEveritt says.– RichVelCommented Dec 20, 2016 at 8:47 -
7Be warned that
pyvenv
orpython3 -m venv ...
do NOT install thepython-config
script. This means that even after activating your Python3 environment the system-widepython-config
will be invoked with confusing consequences. See this bug report from 2011 github.com/pypa/virtualenv/issues/169 and my question stackoverflow.com/questions/42020937/… Commented Feb 23, 2018 at 11:16 -
50Confirming that @Nick's observation works: The way to create a
venv
with a specific Python version is by using that version when setting it up. For example:python3.5 -m venv venv
– taniusCommented Oct 21, 2019 at 21:35 -
26It's still possible to use a different python version with
venv
. Instead of providing an argument, like withvirtualenv
, you just be sure to use the appropriate python version to runvenv
. Example withpy
the python launcher:py -3.3 -m venv my_venv
will create a virtual environment using python 3.3. Commented May 12, 2020 at 20:22
There is an easier way,
virtualenv venv --python=python2.7
Thanks to a comment, this only works if you have python2.7 installed at the system level (e.g. /usr/bin/python2.7).
Otherwise, if you are using homebrew you can use the path to give you what you want.
virtualenv venv --python=/usr/local/bin/python
You can find the path to your python installation with which python
(Linux) or py -0p
(Windows)
This will also work with python 3.
which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3
Ultimately condensing to:
virtualenv venv -p `which python`
virtualenv venv -p `which python3`
-
5FYI, only works if you have python2.7 installed at the system level (e.g. /usr/bin/python2.7)– kingb12Commented Jan 27, 2017 at 20:23
-
I was able to do this with
virtualenv venv --python=python3.6
as well– JordanCommented Sep 7, 2017 at 18:03 -
You can actually drop the minor version number.
virtualenv env --python=python2
– AnshulCommented Feb 5, 2018 at 6:56 -
That's a proper solution, once you have all versions, you are interested in justing using the alias not the full path Commented Nov 20, 2018 at 19:54
-
In Windows, this worked like a charm with a minor tweak:
virtualenv venv --python=<insert_your_python_version_here>
where<insert_your_python_version_here>
was in my caseC:\Python\Python368\python.exe
Commented Jul 16, 2019 at 17:23
These are the steps you can follow when you are on a shared hosting environment and need to install & compile Python from source and then create venv
from your Python version. For Python 2.7.9. you would do something along these lines:
mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install
virtual env
cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate
Naturally, this can be applicable to any situation where you want to replicate the exact environment you work and deploy on.
-
5Could you elaborate on why to do it that way: Why install python locally? And more importantly why install virtualenv using the python version you want to use with it?– lajarreCommented Oct 8, 2012 at 19:46
-
21sure. If you are on virtual hosting environment and the server provides older versions of python that you are not happy with - that was my case scenario. Also if you happen to develop projects on different servers and you want to replicate these environments on your local machine.... Virtualenv creates hard links to python libs . so it's really important with version of python you are using to install and create Virtualenv from.– zzartCommented Oct 11, 2012 at 20:15
-
9Or if you are like me and am on a locked down machine at work with no sudo privileges. Local copies of libraries, SQL databases, languages and compilers galore! Thanks! Commented Jan 24, 2013 at 18:03
-
6Under virtualenv 1.9.1, I had to use
~/.localpython/bin/virtualenv
instead of justvirtualenv
for setup to complete without errors. In addition, usesource ve/bin/activate
instead ofsource activate
.– SaulCommented Apr 10, 2013 at 7:40 -
3Another reason to do this would be to try out betas before they go main to make sure your projects and their dependencies still work without risking breaking your package management by clobbering something and leaving dangling files all over the place. I like this answer. Commented Dec 29, 2013 at 14:02
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
-
3See my answer below for an equivalent solution using environment variables. That approach means you don't have to remember to use
-p
. Commented Aug 5, 2016 at 20:58 -
6Is there no solutions that switches between python versions without requiring to create a new virtual environment? Commented Aug 28, 2016 at 22:27
-
4Would this work, if you want to install a python version that is not installed on your system? Say you want to test out
python3.6
but dont want to touchpython3.5
installed on your computer? Commented Jul 31, 2018 at 3:53 -
2
Under Windows for me this works:
virtualenv --python=c:\Python25\python.exe envname
without the python.exe
I got WindowsError: [Error 5] Access is denied
I have Python2.7.1 installed with virtualenv 1.6.1, and I wanted python 2.5.2.
-
This is the only method that worked for me. Thanks for the post!– Brad123Commented Jun 9, 2022 at 14:58
[November 2019] I needed to install a Python 3.7 environment (env) on my Python 3.8-based Arch Linux system. Python 3.7 was no longer on the system, so I could not downgrade Python, to install a package that I needed.
Furthermore, I wanted to use that package / Python 3.7 inside a virtual environment (venv). This is how I did it.
Download Python version source files:
I downloaded the Python 3.7.4 source files from
to
/mnt/Vancouver/apps/python_versions/src/Python-3.7.4.tgz
I then extracted that archive (source files) to
/mnt/Vancouver/apps/python_versions/src/Python-3.7.4/
Installation:
[Note: in my system env, not a venv.]
cd /mnt/Vancouver/apps/python_versions/src/Python-3.7.4/
time ./configure ## 17 sec
time make ## 1 min 51 sec
time sudo make install ## 18 sec
time make clean ## 0.3 sec
Examine installed Python versions:
$ which python
/usr/bin/python
$ python --version
Python 3.8.0
$ which python3.7
/usr/local/bin/python3.7
$ python ## Python 3.8 [system / env]
Python 3.8.0 (default, Oct 23 2019, 18:51:26)
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ python3.7 ## newly-installed Python 3.7 package
Python 3.7.4 (default, Nov 20 2019, 11:36:53)
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53)
[GCC 9.2.0]
>>>
$ python3.7 --version
Python 3.7.4
How to create a venv for a specific Python version:
https://docs.python.org/3/tutorial/venv.html
12.2. CREATING VIRTUAL ENVIRONMENTS
The module used to create and manage virtual environments is called
venv
.venv
will usually install the most recent version of Python that you have available. If you have multiple versions of Python on your system, you can select a specific Python version by running python3 or whichever version you want.To create a virtual environment, decide upon a directory where you want to place it, and run the venv module as a script with the directory path:
python3 -m venv tutorial-env
This will create the
tutorial-env
directory if it doesn’t exist, and also create directories inside it containing a copy of the Python interpreter, the standard library, and various supporting files. ...
Create Python 3.7 venv [on a Python 3.8 operating env / system]:
python3.7 -m venv ~/venv/py3.7 ## create Python 3.7-based venv
source ~/venv/py3.7/bin/activate ## activate that venv
deactivate ## deactivate that venv (when done, there)
Added to ~/.bashrc
:
alias p37='echo " [Python 3.7 venv (source ~/venv/py3.7/bin/activate)]" && source ~/venv/py3.7/bin/activate'
Test Python 3.7 venv:
$ p37
[Python 3.7 venv (source ~/venv/py3.7/bin/activate)]
(py3.7)$ python --version
Python 3.7.4
(py3.7)$ python
Python 3.7.4 (default, Nov 20 2019, 11:36:53)
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53)
[GCC 9.2.0]
>>>
-
2This is an extremely thorough answer! :) I encounter this issue every time I need to transfer something from Arch Linux to any other (e.g. Debian-ish) system. Commented Dec 18, 2019 at 0:53
-
1@Victoria Stuart, thank you very much. This is exactly what I was looking for. Commented Feb 1, 2020 at 18:17
-
1Here are good step-by-step instructions for how to install Python 3.7 from source on Debian linuxize.com/post/how-to-install-python-3-7-on-debian-9. But as usual, it suggests
sudo make altinstall
and I would strongly recommend to install as a normal user instead, e.g.,./configure --prefix=~/my-python-3.7 && make -j8 && make install
. Then you can do~/my-python-3.7/bin/python -m venv myvirtualenv
– oseiskarCommented Jul 1, 2020 at 12:30
Mac OSX 10.6.8 (Snow Leopard):
1) When you do pip install virtualenv
, the pip command is associated with one of your python versions, and virtualenv
gets installed into that version of python. You can do
$ which pip
to see what version of python that is. If you see something like:
$ which pip
/usr/local/bin/pip
then do:
$ ls -al /usr/local/bin/pip
lrwxrwxr-x 1 root admin 65 Apr 10 2015 /usr/local/bin/pip ->
../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip
You can see the python version in the output.
By default, that will be the version of python that is used for any new environment you create. However, you can specify any version of python installed on your computer to use inside a new environment with the -p flag
:
$ virtualenv -p python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3.2
New python executable in my_env/bin/python
Installing setuptools, pip...done.
virtualenv my_env
will create a folder in the current directory which will contain the Python executable files, and a copy of the pip [command] which you can use to install other packages.
http://docs.python-guide.org/en/latest/dev/virtualenvs/
virtualenv
just copies python from a location on your computer into the newly created my_env/bin/ directory.
2) The system python is in /usr/bin
, while the various python versions I installed were, by default, installed into:
/usr/local/bin
3) The various pythons I installed have names like python2.7
or python3.2
, and I can use those names rather than full paths.
========VIRTUALENVWRAPPER=========
1) I had some problems getting virtualenvwrapper to work. This is what I ended up putting in ~/.bash_profile
:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects #Not very important -- mkproject command uses this
#Added the following based on:
#http://stackoverflow.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh
2) The -p option
works differently with virtualenvwrapper: I have to specify the full path to the python interpreter to be used in the new environment(when I do not want to use the default python version):
$ mkvirtualenv -p /usr/local/bin/python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3
New python executable in my_env/bin/python
Installing setuptools, pip...done.
Usage: source deactivate
removes the 'bin' directory of the environment activated with 'source
activate' from PATH.
Unlike virtualenv, virtualenvwrapper will create the environment at the location specified by the $WORKON_HOME environment variable. That keeps all your environments in one place.
-
which pip
doesn't tell me the version of Python. It gives me this-/usr/local/bin/pip
.– SankalpCommented Mar 16, 2018 at 2:36 -
@Sankalp, If you cd to
/usr/local/bin
and do$ ls -al pip
, you should see something like:pip -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip
– 7studCommented Mar 16, 2018 at 2:44 -
Already somewhat noted in answer, but
mkproject
is the command to use if you want it to create both the project directory and a virtual environment of a given python version.mkproject -p /usr/bin/python3.6 myNewPython36Project
Commented Jan 24, 2019 at 5:13 -
@7stud when i cd to
/usr/local/bin
and dols -al pip
i get this-rwxr-xr-x 1 root admin 266 23 Mar 09:40 pip
– kd12345Commented Mar 24, 2021 at 7:39 -
@kd12345, Then maybe don't rely on the default and specify the python version that you want to use with
virtualenv -p
.– 7studCommented Mar 24, 2021 at 15:10
Suppose you currently have python 2.7 installed in your virtualenv. But want to make use of python3.2
, You would have to update this with:
$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
Then activate your virtualenv by:
$ source activate name_of_your_virtualenv
and then do: python --version
in shell to check whether your version is now updated.
-
See my answer below for an equivalent solution using environment variables. That approach means you don't have to remember to use
-p
. Commented Aug 5, 2016 at 20:58
You should have that Python version installed. If you have it then basically,
With virtualenv,
virtualenv --python=python3.8 env/place/you/want/to/save/to
with venv
python3.8 -m venv env/place/you/want/to/save/to
The above examples are for python3.8, you can change it to have different versions of virtual environments given that they are installed in your computer.
-
how to install specific version of python using above command? Commented Feb 3, 2021 at 6:45
-
if you have for example python3.8 installed within your computer, the example above will create python3.8 environment.– atakannCommented Feb 3, 2021 at 11:23
-
yes it's working as you said but I need a different version means in my pc python3.9 is installed but i need to create virtual env for python3.6. Commented Feb 3, 2021 at 12:15
-
Anyone ever tried or checked what happens if you create a venv from a specific conda environments python version? Based on what I see and read (here) that could add a lot of flexibility to the use of different Python versions when creating a venv?– GWDCommented Jul 5, 2022 at 21:23
These two commands should work fine.
virtualenv -p python2 myenv
(For python2)
virtualenv -p python3 myenv
(For python3)
-
1The flag -p python2 works equivalent to looking for /usr/bin/python2. Use : virtualenv -p python2.7 myenv for 2.7 etc. Commented Dec 28, 2018 at 2:05
You can call virtualenv
with python version you want. For example:
python3 -m virtualenv venv
Or alternatively directly point to your virtualenv path. e.g. for windows:
c:\Python34\Scripts\virtualenv.exe venv
And by running:
venv/bin/python
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
you can see the python version installed in virtual environment
-
I got this error on running the first command /usr/local/bin/python3: No module named virtualenv– tanviCommented May 23, 2016 at 13:48
-
2@tanvi : You need to install virtualenv into your python3 first. Run
pip3 install virtualenv
first Commented May 23, 2016 at 14:30
On macOS in 2024; when using pyenv:
brew install pyenv
.. and follow post install instructions to setup pyenv, see; https://github.com/pyenv/pyenv?tab=readme-ov-file#unixmacos
basically comes down to adding these lines in your ~/.bashrc
or ~/.zshrc
file:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"
Install your favorite python version, e.g. 3.11.6
pyenv install 3.11.6
Now, you can create a new python virtual environment, in the same directory of your project, like so:
~/.pyenv/versions/3.11.6/bin/python -m venv name-of-your-venv
Activate the env:
source name-of-your-venv/bin/activate
Check the python version active in this python env:
(venv) python --version
Deactivate the env:
(venv) deactivate
Cleanup the env:
just delete the folder with the name of the python env, so in this case:
rm -rf name-of-your-venv
Do not commit your virtualenv in git. To make sure, add it to your .gitignore
file:
name-of-your-venv/
Also make sure that this folder is not used to scan for linting, testing, coverage, as it slows down those processes. So, in a Python project that uses black
for linting, isort
for sorting imports, and pytest
for unit testing, and poetry
for managing dependencies, a pyproject.toml
file would contain this:
[tool.pytest.ini_options]
norecursedirs = [".git", "name-of-your-venv"]
[tool.black]
exclude = ".git|name-of-your-venv"
[tool.isort]
skip = [".git", "name-of-your-venv"]
A good practise is to name your virualenv venv
or .venv
The -p
approach works well, but you do have to remember to use it every time. If your goal is to switch to a newer version of Python generally, that's a pain and can also lead to mistakes.
Your other option is to set an environment variable that does the same thing as -p
. Set this via your ~/.bashrc
file or wherever you manage environment variables for your login sessions:
export VIRTUALENV_PYTHON=/path/to/desired/version
Then virtualenv
will use that any time you don't specify -p
on the command line.
-
This worked beautifully. Any idea why setting
export VIRTUALENVWRAPPER_PYTHON=/path/to/desired/version
per the virtualenvwrapper docs didn't work but this solution did work? Commented Nov 8, 2016 at 22:37 -
That env var controls which Python
virtualenvwrapper
uses when run, nothing to do with installs. Commented Nov 9, 2016 at 1:47 -
This worked for me. No longer have to use -p every time I create a new virtualenv. Thanks!– nedblorfCommented Apr 10, 2019 at 15:29
On the mac I use pyenv and virtualenvwrapper. I had to create a new virtualenv. You need homebrew which I'll assume you've installed if you're on a mac, but just for fun:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10
export PATH=/Users/{USERNAME}/.pyenv/versions/2.7.10/bin:$PATH
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python {virtual_env_name}
I also froze my requirements first so i could simply reinstall in the new virtualenv with:
pip install -r requirements.txt
-
Command should be
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python {virtual_env_name}
versions, not version. If SO allowed short edits, I woulda fixed it. Commented Sep 4, 2015 at 4:30 -
pyenv
includes virtualenv support through thepyenv-virtualenv
plugin, so I find I don't really need virtualenvwrapper. More details in my pyenv answer.– RichVelCommented May 7, 2017 at 7:26 -
I definitely agree with @RichVel, using the provided pyenv-virtualenv with pyenv is the most seemless experience we could ask for ! ( cf realpython.com/intro-to-pyenv/#virtual-environments-and-pyenv )– bluuCommented Dec 1, 2020 at 10:59
On windows:
py -3.4x32 -m venv venv34
or
py -2.6.2 -m venv venv26
This uses the py
launcher which will find the right python executable for you (assuming you have it installed).
Even easier, by using command substitution to find python2 for you:
virtualenv -p $(which python2) <path/to/new/virtualenv/>
Or when using virtualenvwrapper :
mkvirtualenv -p $(which python2) <env_name>
These seem a little overcomplicated for Windows. If you're on Windows running python 3.3 or later, you can use the python launcher py
to do this much more easily. Simply install the different python version, then run:
py -[my version] -m venv env
This will create a virtual environment called env
in your current directory, using python [my version]
. As an example:
py -3.7 -m venv env
./env/Scripts/activate
This creates a virtual environment called env
using python3.7 and activates it. No paths or other complex stuff required.
-
It's risky to run py because it might run Python in a different directory if configured. Best to be in the correct Python directory with python.exe and use python keyword instead. Commented Mar 24, 2021 at 17:52
As already mentioned in multiple answers, using virtualenv is a clean solution. However a small pitfall that everyone should be aware of is that if an alias for python is set in bash_aliases like:
python=python3.6
this alias will also be used inside the virtual environment. So in this scenario running python -V
inside the virtual env will always output 3.6
regardless of what interpreter is used to create the environment:
virtualenv venv --python=pythonX.X
For Mac(High Sierra), install the virtualenv on python3 and create a virtualenv for python2:
$ python3 -m pip install virtualenv
$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
-
1Install virtualenv on python3 if you don't have:
python3 -m pip install virtualenv
Commented Jul 3, 2018 at 15:47
I utilized this answer for Windows
https://stackoverflow.com/a/22793687/15435022
py -3.4 -m venv c:\path\to\wherever\you\want\it
I use pyenv to manage my python version.
pyenv install 3.7.3
pyenv local 3.7.3
Check your python version:
$ python --version
Python 3.7.3
Create the virtual environment with venv:
python -m venv .
Then activate the Virtual Environment:
source bin/activate
Check your python version:
$ python --version
Python 3.7.3
You may need to remove the previous virtual environment
rm -rf bin
-
1As mentionned in a comment to another answer: it's even easier to use the provided pyenv-virtualenv with pyenv (cf realpython.com/intro-to-pyenv/#virtual-environments-and-pyenv )– bluuCommented Dec 1, 2020 at 11:01
-
I had to run a pyenv shell for the selected python version:
pyenv shell 3.11.3
and then runpython -m venv env
to create the virtual environment. This creates a virtual environment with the nameenv
that uses python 3.11.3. To install python versions usepyenv install 3.11.2
. And in order to use the shell you might need to follow prompted configuration steps when using it for the first time with the commandpyenv shell 3.11.3
. Commented Apr 19, 2023 at 20:57
On Linux Ubuntu 21.04 (currently Python 3.9.5) I needed to get a virtualenv of Python 3.7.8. Full steps to get working:
Find the Python version source you want, for example 3.7.8 is here: https://www.python.org/downloads/release/python-378/
Download the Gzipped source tarball
Unzip it with tar zxvf Python-3.7.8.tgz
(amend as required with your version number if different from 3.7.8)
Copy the unzipped folder to /usr/bin with: sudo cp -r Python-3.7.8 /usr/bin
cd /usr/bin/Python-3.7.8/
Check the contents if you wanted to see what you have so far: ls
sudo time ./configure
sudo time make
time sudo make install
time make clean
Check how your python is set up and reporting:
which python
python --version
Should be all relating to your primary install (Python 3.9.5 for me)
To check your new install:
which python 3.7
python3.7 --version
Should be all relating to your 3.7.8 install
If you want to run it to check, do:
python3.7
exit()
Install venv:
sudo apt install venv
To create a venv (maybe in your repo, if so, add .venv to .gitignore):
python3.7 -m venv .venv
To activate your venv:
source .venv/bin/activate
Check your version:
python --version
-
Why using "time" in the configure and compilation part? Could not see any such instruction in the Build instruction in README.rst. Commented Oct 11, 2021 at 7:16
-
Why is venv so far behind anaconda in ease of use when it comes to targeting an environment toward a particular version of python?– user3673Commented Dec 9, 2021 at 20:56
-
Not only did it not work, but it also set my system's default python version to 3.7 :-( Commented Nov 22, 2022 at 16:26
-
Suppose I want to use python 3.8 and I'm using MacOS.
brew install [email protected]
Then,
python3.8 -m venv venv
In windows subsystem for linux:
Create environment for python3:
virtualenv --python=/usr/bin/python3 env
Activate it:
source env/bin/activate
End of 2020:
The most seamless experience for using virtualenv (added benefit: with any possible python version) would be to use pyenv and its (bundled) pyenv-virtualenv plugin (cf https://realpython.com/intro-to-pyenv/#virtual-environments-and-pyenv)
Usage: pyenv virtualenv <python_version> <environment_name>
Installation:
- first check that you've got all prerequisites (depending on your OS): https://github.com/pyenv/pyenv/wiki/Common-build-problems#prerequisites
curl https://pyenv.run | bash
exec $SHELL
cf https://github.com/pyenv/pyenv-installer
That being said, nowadays the best possible alternative instead of using virtualenv
(and pip
) would be Poetry (along with pyenv
indicated above, to handle different python versions).
Another option, because it's supported directly by the PyPA (the org behind pip
and the PyPI) and has restarted releasing since the end of May (didn't release since late 2018 prior to that...) would be Pipenv
This worked for my usage in Windows 10, where I have Python 3.7 and want to downgrade for a project in Python 3.6.6:
I used "venv" to create a new environment called "venv", I downloaded from https://www.python.org/downloads/windows/ ; install "Download Windows x86-64 executable installer-" ; then I used the following command line in the directory where I want to create my environment
>C:\Users\...\Python\Python36\python.exe -m venv venv
Finally, I activated the environnent using the command line:
>venv\Scripts\activate.bat
And check the python version by calling:
>python --version
Python 3.6.6
Yes, the above answers are correct and works fine on Unix based systems like Linux & MAC OS X.
I tried to create virtualenv for Python2 & Python3 with the following commands.
Here I have used venv2 & venv3 as their names for Python2 & Python3 respectively.
Python2 »
MacBook-Pro-2:~ admin$ virtualenv venv2 --python=`which python2`
Running virtualenv with interpreter /usr/local/bin/python2
New python executable in /Users/admin/venv2/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$
MacBook-Pro-2:~ admin$ ls venv2/bin/
activate easy_install pip2.7 python2.7
activate.csh easy_install-2.7 python wheel
activate.fish pip python-config
activate_this.py pip2 python2
MacBook-Pro-2:~ admin$
Python3 »
MacBook-Pro-2:~ admin$ virtualenv venv3 --python=`which python3`
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/admin/venv3/bin/python3
Also creating executable in /Users/admin/venv3/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$
MacBook-Pro-2:~ admin$ ls venv3/bin/
activate easy_install pip3.6 python3.6
activate.csh easy_install-3.6 python wheel
activate.fish pip python-config
activate_this.py pip3 python3
MacBook-Pro-2:~ admin$
Checking Python installation locations
MacBook-Pro-2:~ admin$ which python2
/usr/local/bin/python2
MacBook-Pro-2:~ admin$
MacBook-Pro-2:~ admin$ which python3
/usr/local/bin/python3
MacBook-Pro-2:~ admin$
I use Windows so I should use .exe
on the pthon path
virtualenv -p=C:\Python27\python2.exe <envname>
Answer to this question shouldn't be that complicated...
TL,DR:
install as many versions of python you prefer on your system and use:
/c/path/to/any/version/of/python -m venv my_venv
============================================
I use venv to install virtual environments with
python -m venv <where/to/and/name_of_venv>
if you try which python
you will see which python you are referring to, when saying "python". for example, for me it is:
which python
result: /c/Program Files/Python36/python
So, now you have the answer!
you can install any version of python on your system and have multiple of them at the same time. So, for example I installed Python3.7 in this directory: "C:\Program Files\Python37".
So, instead of using 'python' now I specify which python by /c/Program\ Files/Python37/python
:
/c/Program\ Files/Python37/python -m venv my_venv
(don't forget to escape the space in the path)
That's it!