W systemach Linux spakowany Vim zazwyczaj ma tylko jeden z nich python
lub jest python3
włączony. Możliwe jest włączenie obu (za pomocą python/dyn
i python3/dyn
), ale podczas sesji można użyć tylko jednego. W tej dyskusji na liście mailowej napisano :
Zależy to od sposobu budowania bibliotek Pythona. W systemach opartych na Debianie (z powodów, których nie pamiętam od razu), są one zbudowane w taki sposób, że RTLD_GLOBAL musi być użyty, aby uzyskać dostęp do symboli. Zapobiega to ładowaniu zarówno libpython2.x, jak i libpython3.x w tym samym procesie.
Co można zrobić, aby umożliwić ładowanie obu w tej samej sesji?
Opcje, które widzę:
- Przebuduj pakiety Python {2,3}, aby
RTLD_GLOBAL
(cokolwiek to może być) nie było potrzebne. - Jakimś sposobem wcześniej załaduj bibliotekę, aby została zwolniona (?!) Przez Vima. (Czy to w ogóle możliwe?)
W przypadku jakichkolwiek szczegółów dystrybucji załóż, w kolejności rosnącej specyficzności:
- Oparty na Debianie
- Ubuntu
- Ubuntu 14.04
- Lub Arch Linux, jeśli system oparty na Debianie jest zbyt skomplikowany.
Zauważ, że mam Vima do zbudowania z obsługą dynamicznego ładowania dla obu, więc budowanie Vima nie stanowi problemu.
źródło
vim-runtime
opakowaniu, mająvim
,gvim
,vim-python3
igvim-python3
. Jedyną różnicą między-python3
zwykłymi pakietami a wersją jest wersja Pythona. Jasne, podwaja liczbę pakietów frontendowych, ale to wszystko, co widzę w takich opakowaniach.vim-nox
,vim-gtk
,vim-gnome
, ivim-athena
. Podwojenie ich tylko po to, aby użytkownicy nadal nie mogli używać zarówno wtyczek Python, jak i Python3, nie wydaje się opłacalne.Ubuntu 16.04 ma teraz
vim-*-py2
pakiety zawarte w repozytorium. Oznacza to, że wszyscy użytkownicy Debian Vim mogą w razie potrzeby przeprowadzić migrację do Ubuntu.Dawne
vim-*
pakiety teraz zapewniają+python3
, a pliki binarne są nazywane inaczej, aby uniknąć konfliktu:vim.nox
dlavim-nox
i+python3
vim.nox-py2
dlavim-nox-py2
i+python
I tak dalej.
źródło