Python virtualenv не активируется в Windows 10 Cmder
Я использую Cmder на Windows 10 с Python 3.5 и virtualenv на моем ноутбуке и работаю на компьютере просто отлично.
Теперь у меня есть новый компьютер под управлением Windows 10, Python 3.5, virtualenv 15.0, и я могу инициализировать виртуальную среду python с помощью:
virtualenv env
и я получаю каталоги virtualenv, но когда я бегу:
env/Scripts/activate
Ничего не произошло. Нет сообщения об ошибке и, что хуже всего, ничего не означает, что среда была активирована или нет (то есть строка "(env)" не появляется в терминале рядом с путем).
Странно то, что я могу активировать venv при использовании простого старого cmd, и в терминале появляется "(env)". Просто не когда запускаю в Cmder. Еще одна странность (которая, я думаю, не связана, но может быть связана с этим), заключается в том, что, как только я могу запустить virtualenv в обычном cmd, он говорит, что ключевое слово "деактивировать" не распознается, когда я пытаюсь его отключить.
Я нашел этот пост (ниже) в StackOverflow, который похож, но не настолько полезен, так как на самом деле не имеет ответа и больше относится к PowerShell.
https://stackoverflow.com/questions/31769863/cant-activate-python-venv-in-windows-10
Какие-нибудь мысли?
Спасибо.
1 ответ
Обратите внимание, что этот ответ устарел и больше не требуется, так как cmder теперь поддерживает conda/venv. Обновите установку cmder, если она не работает для вас.
Оригинальный (устаревший) ответ
У меня была похожая проблема с conda env (и похоже на то же самое для vanilla virtualenv). Cmder запускает собственное приглашение и игнорирует PROMPT env var, вам нужно добавить файл с именем [cmder dir]\config[кое-что].lua со следующим содержимым:
-- Code based on https://github.com/cmderdev/cmder/issues/1056
-- with modifications to make it actually work (https://github.com/cmderdev/cmder/issues/1056#issuecomment-237403714)
---
-- Find out current conda/virtual envs
-- @return {false|conda/virtual env name}
---
local clink_path_lua_file = clink.get_env('CMDER_ROOT')..'\\vendor\\clink-completions\\modules\\path.lua'
dofile(clink_path_lua_file)
function get_virtual_env(env_var)
env_path = clink.get_env(env_var)
if env_path then
basen = exports.basename(env_path)
return basen
end
return false
end
---
-- add conda env name
---
function conda_prompt_filter()
-- add in conda env name
local conda_env = get_virtual_env('CONDA_DEFAULT_ENV')
if conda_env then
clink.prompt.value = string.gsub(clink.prompt.value, "λ", "["..conda_env.."] λ")
end
end
---
-- add virtual env name
---
function venv_prompt_filter()
-- add in virtual env name
local venv = get_virtual_env('VIRTUAL_ENV')
if venv then
clink.prompt.value = string.gsub(clink.prompt.value, "λ", "["..venv.."] λ")
end
end
clink.prompt.register_filter(conda_prompt_filter, 20)
clink.prompt.register_filter(venv_prompt_filter, 20)