Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I update a Python virtual environment with `venv` to use a newer version of Python?

I have recently installed Python 3.8.0 alongside Python 3.7.4.

I have some virtual environments (created using python -m venv <directory> that are based on v3.7.4. How do I update them to use v3.8.0?

Do I need to create a new virtual environment and reinstall the dependencies, scripts, etc.?


Note: There are some existing Q&A's (such as this) that deal with the older virtualenv package/tool. I'm specifically asking about the new built-in venv module, which is a standard built-in to Python since v3.3 and has some differences from virtualenv.

like image 623
LightCC Avatar asked Oct 25 '19 17:10

LightCC


People also ask

Can I change the Python version from VENV?

It's still possible to use a different python version with venv . Instead of providing an argument, like with virtualenv , you just be sure to use the appropriate python version to run venv . Example with py the python launcher: py -3.3 -m venv my_venv will create a virtual environment using python 3.3.

What version of Python does VENV use?

Creating a Python Virtual Environment virtualenv supports older Python versions and needs to be installed using the pip command. In contrast, venv is only used with Python 3.3 or higher and is included in the Python standard library, requiring no installation.


1 Answers

I guess what you're looking for is the --upgrade parameter.

python -m venv --help
usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear]
            [--upgrade] [--without-pip] [--prompt PROMPT]
            ENV_DIR [ENV_DIR ...]

Creates virtual Python environments in one or more target directories.

positional arguments:
  ENV_DIR               A directory to create the environment in.

optional arguments:
  -h, --help            show this help message and exit
  --system-site-packages
                        Give the virtual environment access to the system
                        site-packages dir.
  --symlinks            Try to use symlinks rather than copies, when symlinks
                        are not the default for the platform.
  --copies              Try to use copies rather than symlinks, even when
                        symlinks are the default for the platform.
  --clear               Delete the contents of the environment directory if it
                        already exists, before environment creation.
  --upgrade             Upgrade the environment directory to use this version
                        of Python, assuming Python has been upgraded in-place.
  --without-pip         Skips installing or upgrading pip in the virtual
                        environment (pip is bootstrapped by default)
  --prompt PROMPT       Provides an alternative prompt prefix for this
                        environment.

You need to run it with the targeted python version, for example in this case:

python3.8 -m venv --upgrade <path_to_dir>

Assuming that python3.8 is the name of your python 3.8.0 executable.

like image 90
RMPR Avatar answered Sep 22 '22 06:09

RMPR