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
或者,如果基于Debian的系统太复杂,则使用Arch Linux。
请注意,我已经构建了Vim并同时支持这两者的动态加载。 Vim没问题。
#1 楼
我是Debian的现任Vim维护者,并且在引用的邮件列表讨论中引用了该人。正如您所说,这不是有关Vim的问题。这是关于构建Vim以符合您需求的方式链接的软件。要求在Debian的Vim封装中启用Python3的错误中(至少在Debian方面)对此问题进行了更全面的讨论。
归结为
Python打包不会将Python扩展链接到相关的libpython共享库。这就是导致Debian的Vim打包在使用
RTLD_GLOBAL
动态加载Python语言绑定时要求使用dlopen()
的原因。没有好的方法来表达Vim软件包与动态加载的库,以确保它们在适当的时候一起升级。即使解决了第一点,这个问题仍然会阻止我启用对Python支持的动态加载。
在Vim中动态加载语言支持的要点是不要求用户安装他们不会使用的库。采用。这意味着Vim打包不能指定对最低版本库的硬依赖性。
因此,如果Vim是针对较新版本的库构建的,而该新版本与旧版本和用户不向后兼容不能一起升级它们,Vim会崩溃。这不是我希望软件包的用户遇到的问题。
我希望能够重新启用该功能(该功能在2010年推出了很短的时间, 2011年)动态加载语言支持,但必须首先解决上述问题。
从版本2:7.4.2330-1开始,Debian的包装已改为使用Python3代替Python2绑定。
作为替代方案,neovim软件包支持使用来自同一nvim进程的Python2和Python3,因为Python支持由外部模块提供(python-neovim和python3-neovim软件包)。外部化Python代码,而不是像Vim一样嵌入它,避免了处理libpython的构建问题。
#2 楼
Ubuntu 16.04现在在仓库中包含vim-*-py2
软件包。这意味着所有Debian Vim用户都可以根据需要迁移到Ubuntu。以前的
vim-*
软件包现在提供+python3
,并且二进制文件的名称不同,以避免冲突:vim.nox
和vim-nox
的+python3
vim.nox-py2
和vim-nox-py2
的+python
依此类推。
评论
因此,在16.04上,我可以在同一Vim会话中加载python2和python3吗?
–muru
16年6月6日在19:15
@muru不,您可以轻松选择给定会话中的哪个;)
–霍布斯
16年4月14日下午5:32
@hobbs我很确定软件包与python3冲突。
–muru
16年4月14日在6:00
@muru实际上,他们没有。您可以安装并运行任意一个,也可以选择一个作为默认vim。这不是很好,但这是一种改进。
–霍布斯
16-4-14在6:18
现在从17.04开始,Python 2支持和相关的Vim软件包已被删除。
–muru
17年8月29日在16:18
评论
“这意味着Vim打包不能指定对最低版本库的严格依赖。”我认为这就是为什么Debian没有像Arch Linux那样为Vim + Python2和Vim + Python3提供单独的软件包的原因?
–muru
2015年2月25日在22:49
@muru Python只是可用的语言绑定之一。提供大量用于不同语言和GUI工具包的软件包的组合。决定是尽可能地启用尽可能多的语言绑定,并在GUI工具包中进行选择(或不选择)。用户不必根据编写语言选择Vim插件。
–詹姆斯
2015年2月26日在2:23
这不是一个真正的论据,因为只有Python和Python3相互冲突。老实说,我认为您应该借鉴Arch开发人员的书。除了常见的vim运行时软件包外,它们还有vim,gvim,vim-python3和gvim-python3。 -python3和普通软件包之间的唯一区别是启用的Python版本。当然,它使前端程序包的数量增加了一倍,但这就是我在此类程序包中看到的所有缺陷。
–muru
2015年2月26日在2:55
那是拱门。在Debian中,有vim-nox,vim-gtk,vim-gnome和vim-athena。将它们加倍以使用户仍然不能同时使用Python和Python3插件似乎并不值得。
–詹姆斯
2015年2月26日,下午3:07
我对您为什么不为常规软件包选择动态选项感到好奇。
–muru
16 Sep 14'0:46