используйте конкретную версию python в virtualenv (virtualenvwrapper) после создания виртуальной среды

#python #virtualenv #virtualenvwrapper

Вопрос:

Я хотел бы знать, можно ли указать версию python в виртуальной среде (созданной с помощью virtualenv и virtualenvwrapper) после создания среды.

Если я создам virtualenv с помощью следующей команды:

mkvirtualenv -p python3.8 venvname

Я хотел бы знать:

Я могу быть уверен, что использую python3.8, просто набрав python , когда виртуальная среда активирована, и она отобразит что-то вроде следующего:

 Python 3.8.10 (default, Sep 28 2021, 16:10:42) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more 
information.
>>> 
 

Единственный способ указать версию python в mkvirtualenv команде-это (насколько я знаю) предварительно установить python3.8

Действительно, если, например, я это сделаю

mkvirtualenv -p python3.6 venvname

Я получаю следующую ошибку

RuntimeError: failed to find interpreter for Builtin discover of python_spec='python3.6'

так как у меня не установлен python3.6.

Мой вопрос таков:

Могу ли я изменить версию python, установленную в моем virtualenv, после ее создания?

Заранее спасибо всем, кто попытается мне помочь.

Комментарии:

1. Пожалуйста, задавайте только один вопрос на вопрос!

2. Вы правы, я сожалею об этом. Я отредактировал вопрос, чтобы задать только один вопрос. Теперь это должно быть более ясно.

Ответ №1:

Как я могу быть уверен, что использую python3.6?

Если вы имеете в виду во время выполнения, python --version внутри venv это должно быть сделано.

Это единственный способ указать путь python?

С mkvirtualenv я так считаю. С python -m venv помощью конкретного исполняемого файла python, который вы вызываете, настраивается venv. (документы)

Могу ли я изменить версию python, установленную в моем virtualenv, после ее создания?

AFAIK для этого нет встроенного способа. Можно просто заменить исполняемый файл, обновить библиотеки и уйти, но это звучит как рецепт катастрофы, если не считать изменений измерений. Поскольку вы, по-видимому, используете venv для разработки пакета, и поскольку вы где-то храните свои зависимости от пакетов— — либо a requirements.txt , либо a setup.py , либо что-то в этом роде, создайте новый virtualenv с новым python и начните заново, должно быть просто.

Кстати , если вы еще этого не сделали, вы, возможно, захотите рассмотреть возможность управления всем этим poetry , что делает воссоздание venv еще проще—просто удалите экран venv и сделайте poetry install это снова.

Тем не менее, я готов доказать, что ошибался в обновлении python в рамках venv.

Комментарии:

1. Большое спасибо! после публикации моего вопроса я разобрался с первыми двумя вопросами, а затем подумал, что третий не имеет смысла, поскольку, как вы сказали, может привести к катастрофе! Я думаю, что единственный способ, которым я должен воспользоваться python3.6 , — это установить его на мой локальный компьютер, а затем сделать mkvirtualenv -p python3.6 venvname

2. Я думаю, что этот ответ-это то, что я искал в конце концов. Я приму его через несколько дней, если никто не докажет, что автор неправ.