#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. Я думаю, что этот ответ-это то, что я искал в конце концов. Я приму его через несколько дней, если никто не докажет, что автор неправ.