Problema:
O bin
diretório do meu ambiente virtual produzido com virtualenvwrapper
(que usa virtualenv
sob o capô) está localizado na subpasta, o local
que leva à quebra geral (principalmente virtualenvwrapper
e vscode
por enquanto). Basicamente, essas ferramentas esperam o interpretador em <envname>/bin
e não em <envname>/local/bin
.
Informações:
Já fiz algumas pesquisas e encontrei o seguinte:
- Houve uma mudança no Ubuntu 22.04 que agora usa
posix_local
no módulo emsysconfig
vez doposix_prefix
esquema padrão que foi explicado aqui - O Virtualenv em algum momento introduziu um patch para o Python 2 que alterou o
bin
local paralocal/bin
dentro de um ambiente virtual em resposta aoposix_local
prefixo, que foi solicitado nesta pergunta e resultou nesse patch que deveria corrigir esse bug
Sistema:
- Ubuntu 22.04 LTS x86_64
- python3 - 3.10.4-0ubuntu2
- python3-virtualenv - 20.13.0+ds-2
- virtualenvwrapper==4.8.4
Pergunta:
- Como faço
virtualenv
para instalar meu ambiente<envname>/bin
novamente, ignorando aposix_local
opção? - O motivo pelo qual isso foi corrigido ainda é aplicável ao Python 3? (Devo admitir que realmente não entendi a razão pela qual o patch foi necessário em primeiro lugar.)
O usuário yingmanwumen no GitHub do virtualenv postou uma solução neste problema :
Basicamente, eles mudaram o esquema sysconfig exportando a seguinte variável em seu shell de escolha:
Isso altera o esquema de instalação padrão de
posix_local
, que produziu o comportamento problemático, paradeb_system
, que tem o layout de ambiente virtual normal/esperado novamente. O esquema de instalação atual pode ser verificado com este recorte:Deve-se notar que esta é uma solução temporária. Uma solução real provavelmente incluiria a mudança desse comportamento em
virtualenv
si. O problema de yingmanwumen, bem como o meu próprio problema , tratam de problemas com oposix_local
esquema. Os desenvolvedores devirtualenv
estão abertos a aceitar um PR para resolver o problema subjacente. Atualizarei esta resposta se for proposto e aceito um PR que o resolva.Eu tive o mesmo problema que você e, embora não tenha as respostas para suas perguntas, descobri que mudar para venv resolveu meus problemas em alguns minutos ... Parece ser a maneira moderna e preferida de gerenciar python ambientes virtuais.
fonte
Como configurar o venv
Uma "solução" que funcionou para mim foi fazer o downgrade do setuptools: pip install setuptools==59.6.0