Auf Linux-Systemen ist in Packaged Vim normalerweise nur eines von beiden python
oder nur eines python3
aktiviert. Es ist möglich, dass beide aktiviert sind (mithilfe von python/dyn
und python3/dyn
), aber während einer Sitzung kann nur eine verwendet werden. Diese Mailingliste Diskussion sagte :
Dies hängt davon ab, wie die Python-Bibliotheken erstellt werden. Auf Debian-basierten Systemen (aus Gründen, an die ich mich nicht ohne weiteres erinnere) sind sie so aufgebaut, dass RTLD_GLOBAL verwendet werden muss, um Zugriff auf die Symbole zu erhalten. Dadurch wird verhindert, dass sowohl libpython2.x als auch libpython3.x im selben Prozess geladen werden.
Was kann getan werden, um das Laden von beiden in derselben Sitzung zu ermöglichen?
Optionen, die ich sehen kann:
- Erstellen Sie die Python {2,3} -Pakete neu, sodass
RTLD_GLOBAL
(was auch immer) nicht benötigt wird. - Irgendwie wird die Bibliothek früher geladen, um von Vim entladen zu werden (?!). (Ist das überhaupt möglich?)
Nehmen Sie für alle Einzelheiten der Distribution in aufsteigender Reihenfolge der Spezifität an:
- Debian-basiert
- Ubuntu
- Ubuntu 14.04
- Oder Arch Linux, wenn ein Debian-basiertes System zu komplex ist.
Beachten Sie, dass ich Vim mit Unterstützung für dynamisches Laden für beide erstellen lassen muss , sodass das Erstellen von Vim kein Problem darstellt.
quelle
vim-runtime
Paket, haben sievim
,gvim
,vim-python3
undgvim-python3
. Der einzige Unterschied zwischen den-python3
und den normalen Paketen ist die Version von Python aktiviert. Sicher, es verdoppelt die Anzahl der Frontend-Pakete, aber das ist alles, was ich an solchen Verpackungen sehe.vim-nox
,vim-gtk
,vim-gnome
, undvim-athena
. Es lohnt sich nicht, diese zu verdoppeln, damit Benutzer immer noch nicht sowohl Python- als auch Python3-Plugins verwenden können.In Ubuntu 16.04 sind jetzt
vim-*-py2
Pakete im Repo enthalten. Dies bedeutet, dass alle Debian Vim-Benutzer bei Bedarf auf Ubuntu migrieren können.Die früheren
vim-*
Pakete bieten jetzt+python3
und die Binärdateien sind anders benannt, um Konflikte zu vermeiden:vim.nox
fürvim-nox
und+python3
vim.nox-py2
fürvim-nox-py2
und+python
Und so weiter.
quelle