Nos sistemas Linux, o Vim empacotado normalmente possui apenas um deles python
ou python3
ativado. É possível que ambos estejam ativados (usando python/dyn
e python3/dyn
), mas durante uma sessão, apenas um pode ser usado. Esta discussão na lista de discussão dizia :
Depende de como as bibliotecas Python são construídas. Nos sistemas baseados no Debian (por razões que não me lembro de imediato), eles são construídos de forma que o RTLD_GLOBAL precise ser usado para obter acesso aos símbolos. Isso impede o carregamento de libpython2.xe libpython3.x no mesmo processo.
O que pode ser feito para permitir o carregamento de ambos na mesma sessão?
Opções que eu posso ver:
- Reconstrua os pacotes Python {2,3} para que
RTLD_GLOBAL
(seja o que for) não seja necessário. - De alguma forma, faça com que a biblioteca carregada anteriormente seja descarregada (?!) Pelo Vim. (É mesmo possível?)
Para qualquer detalhe da distribuição, assuma, em ordem crescente de especificidade:
- Baseado no Debian
- Ubuntu
- Ubuntu 14.04
- Ou, Arch Linux, se um sistema baseado no Debian for muito complexo.
Observe que eu tenho o Vim para construir com suporte de carregamento dinâmico para ambos, portanto, criar o Vim não é um problema.
fonte
vim-runtime
pacote, eles têmvim
,gvim
,vim-python3
egvim-python3
. A única diferença entre os-python3
pacotes normal e é a versão do Python ativada. Claro, isso duplica o número de pacotes de front-end, mas é toda a falha que vejo nessas embalagens.vim-nox
,vim-gtk
,vim-gnome
, evim-athena
. Dobrar esses apenas para que os usuários ainda não possam usar os plugins Python e Python3 não parece valer a pena.O Ubuntu 16.04 agora possui
vim-*-py2
pacotes incluídos no repositório. Isso significa que todos os usuários do Debian Vim podem migrar para o Ubuntu, se necessário.Os
vim-*
pacotes anteriores agora fornecem+python3
e os binários são nomeados de maneira diferente para evitar conflitos:vim.nox
paravim-nox
e+python3
vim.nox-py2
paravim-nox-py2
e+python
E assim por diante.
fonte