Как мне обновить виртуальную среду Python с помощью `venv`, чтобы использовать более новую версию Python?

Недавно я установил Python 3.8.0 вместе с Python 3.7.4.

У меня есть несколько виртуальных сред (созданных с использованием python -m venv <directory>, основанных на v3.7.4. Как мне обновить их для использования v3.8.0?

Нужно ли мне создавать новую виртуальную среду и переустанавливать зависимости, скрипты и т. Д.?


Примечание. Существуют некоторые существующие вопросы и ответы (такие как этот), которые относятся к более старому virtualenv пакету / инструменту. Я специально спрашиваю о новом встроенном модуле venv, который является стандартным встроенным в Python с версии 3.3 и имеет некоторые отличия от virtualenv.


person LightCC    schedule 25.10.2019    source источник
comment
Возможный дубликат Как изменить версию python уже существующего virtualenv?   -  person gstukelj    schedule 25.10.2019
comment
Возможный дубликат Можно ли корректно обновить существующий virtualenv?   -  person jeremycg    schedule 25.10.2019
comment
Вам нужно? Может быть нет. Следует вам? да.   -  person chepner    schedule 25.10.2019
comment
@gst, @jeremycg - эти ответы относятся к более старому модулю / пакету virtualenv. Меня интересует только более новый venv, который сейчас встроен, с другим использованием. Обновлено, чтобы указать.   -  person LightCC    schedule 25.10.2019
comment
@chepner Нужно ли вам это или нужно, зависит от других требований проекта, и на них нельзя дать общий ответ.   -  person LightCC    schedule 25.10.2019


Ответы (1)


Я предполагаю, что вы ищете параметр --upgrade.

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.

Вам нужно запустить его с целевой версией Python, например, в этом случае:

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

Предполагая, что python3.8 - это имя вашего исполняемого файла python 3.8.0.

person RMPR    schedule 25.10.2019
comment
Выглядит правильно - но каково использование? Как указать, до какой версии обновляться (например)? - person LightCC; 25.10.2019
comment
что-то вроде python3.8 -m venv ... - person RMPR; 25.10.2019
comment
Звучит здорово. Но у меня что-то не так: F: \ MyCodes \ python \ dtprjops ›python -m venv --upgrade venv Ошибка: [Errno 13] В доступе отказано: 'F: \\ MyCodes \\ python \\ dtprjops \\ venv \ \ Scripts \\ python.exe ' - person Allis Gao; 06.06.2021
comment
@AllisGao Вам нужно запустить его в командной строке администратора - person RMPR; 07.06.2021