Python virtualenv não ativando no Windows 10 Cmder

3

Eu uso o Cmder no Windows 10 com o Python 3.5 e o virtualenv no meu laptop e trabalho no computador.

Agora tenho um novo computador com o Windows 10, Python 3.5, virtualenv 15.0 e consigo inicializar um ambiente virtual python com:

virtualenv env

e eu recebo os diretórios virtualenv, mas quando eu corro:

env/Scripts/activate

Nada acontece. Nenhuma mensagem de erro e, pior de tudo, nada para significar que o ambiente foi ativado ou não (ou seja, a string "(env)" não aparece no terminal ao lado do caminho).

O mais estranho é que eu posso ativar um venv ao usar o antigo cmd e o "(env)" aparecer no terminal. Só não quando executado no Cmder. Outra estranheza (que eu não acho que está relacionada, mas pode ser) é que uma vez que eu possa obter um virtualenv rodando em cmd regular, ele diz que a palavra-chave "desativar" não é reconhecida quando tento desligá-lo.

Eu encontrei este post (abaixo) no StackOverflow, que é semelhante, mas não é tão útil, pois na verdade não tem uma resposta e é mais sobre o PowerShell.

link

Alguma ideia?

Obrigado.

    
por Chaz 03.08.2016 / 04:10

1 resposta

3

Nota esta resposta está desatualizada e não é mais necessária como cmder suporta conda / venv now . Atualize sua instalação do cmder se não estiver funcionando para você.

Resposta original (desatualizada)

Eu tive um problema semelhante com um conda env (e parece ser o mesmo para vanilla virtualenv). O Cmder força seu próprio prompt e ignora o PROMPT env var, você precisa adicionar um arquivo chamado [cmder dir] \ config [algo] .lua com o seguinte conteúdo:

 -- 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)
    
por 04.08.2016 / 01:51