LightCC
LightCC

Reputation: 11719

How do I update a Python virtual environment with `venv` (in Python 3.3+) 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.

Upvotes: 26

Views: 30246

Answers (2)

ozhug
ozhug

Reputation: 1083

from a command prompt outside your venv, when VScode is not running.

python -m venv --upgrade --upgrade-deps "c:/your/project/folder/.venv"

some of the packages are not upgraded correctly/successfully so fixed these with pip uninstall and reinstall.

pip uninstall pyodbc
pip install pyodbc

Upvotes: 5

RMPR
RMPR

Reputation: 3531

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.

Upvotes: 19

Related Questions