В системах Linux пакетный Vim обычно имеет только один из них python
или python3
включен. Можно включить оба (используя python/dyn
и python3/dyn
), но во время сеанса может использоваться только один. Это обсуждение списка рассылки гласило :
Это зависит от того, как создаются библиотеки Python. В системах на основе Debian (по причинам, которые я не вспоминаю не случайно), они построены таким образом, что для получения доступа к символам необходимо использовать RTLD_GLOBAL. Это предотвращает загрузку libpython2.x и libpython3.x в одном процессе.
Что можно сделать, чтобы включить загрузку обоих в одном сеансе?
Варианты, которые я вижу:
- Перестройте пакеты Python {2,3}, чтобы
RTLD_GLOBAL
(что бы это ни было) не нужно. - Каким-то образом загрузите библиотеку, чтобы Vim выгружал ее раньше (?!). (Это вообще возможно?)
Для любых деталей дистрибутива, предположим, в порядке возрастания специфичности:
- Debian на основе
- Ubuntu
- Ubuntu 14.04
- Или Arch Linux, если система на основе Debian слишком сложна.
Обратите внимание, что у меня есть Vim для сборки с поддержкой динамической загрузки для обоих, поэтому сборка Vim не проблема.
vim-runtime
пакета, у них естьvim
,gvim
,vim-python3
иgvim-python3
. Единственное отличие между-python3
обычными и пакетными пакетами заключается в включенной версии Python. Конечно, это удваивает количество внешних пакетов, но это все, что я вижу в такой упаковке.vim-nox
,vim-gtk
,vim-gnome
иvim-athena
. Удвоить их просто так, чтобы пользователи все еще не могли использовать плагины Python и Python3, не стоит.Ubuntu 16.04 теперь имеет
vim-*-py2
пакеты, включенные в репо. Это означает, что все пользователи Debian Vim могут перейти на Ubuntu, если это необходимо.Предыдущие
vim-*
пакеты теперь предоставляют+python3
, и двоичные файлы названы по-разному, чтобы избежать конфликта:vim.nox
дляvim-nox
и+python3
vim.nox-py2
дляvim-nox-py2
и+python
И так далее.
источник