官方的gVim Windows二进制文件是否预编译以配合Python 3工作?

3
我从官方VIM.org网站下载了gVim73_46.exe并安装了它的所有组件,我使用Python 3.2进行开发(如果能够与VIM更好地兼容,我也可以使用3.1)。
运行vim --version命令会给出一个-python -python3的结果。然而,在Vim中运行:echo has("python")会得到一个1(True)。这是否意味着我的Vim支持Python 2?
对于Python 3,运行:py3命令会得到E370: Could not load library python31.dll。这是否意味着它支持Python 3.1?如果是,我能否让它使用我的3.2?
如果不行,有没有任何来源可以获得支持Python 3(+python3)的预编译Windows二进制文件?

1
同样尝试在vim中输入:version,它是否列出相同的编译标志? - pb2q
是的,它们是相同的标志(-python -python 3)。谢谢。 - Moayad Mardini
2个回答

2

来自:help python3:

Vim can be built in four ways (:version output):
1. No Python support        (-python, -python3)
2. Python 2 support only    (+python or +python/dyn, -python3)
3. Python 3 support only    (-python, +python3 or +python3/dyn)
4. Python 2 and 3 support   (+python/dyn, +python3/dyn)

When Python 2 and Python 3 are both supported they must be loaded dynamically. 

运行 :py3 命令出现 E370: 无法加载库 python31.dll。这是否意味着它是为支持 Python 3.1 构建的?

是的。如果您获取了 Python 3.1 并正确设置了路径,则 vim 应该可以使用 Python。

我能让它使用我的 3.2 吗?

不行,vim 是编译为期望特定接口的,所以您需要匹配的库。


+1. 谢谢。你能解释一下Python 3是如何支持的,但Vim却显示“-python -python3”吗? - Moayad Mardini
2
@MoayadMardini has("python")==1 表示 Python 已加载,+python 表示 Vim 使用系统链接器编译了支持 Python 的版本。Vim 可以被编译成依赖于系统链接器导入 Python C API 函数或者使用 dlopen+dlsym(它们的 Windows 等价物,不记得确切名称)自己导入这些函数。在最后一种情况下,has("python") 首先尝试加载 Python 库,然后报告是否支持 Python,但是 +python 被替换为 +python/dyn。请注意,我的系统上 vim --version 给出的是 +python/dyn +python3/dyn,没有 -python+python - ZyX

1

@pydave正确回答了您的问题,我只能建议使用另一个vim版本:http://tuxproject.de.nyud.net/projects/vim/。它编译了几乎最新版本的解释器,包括Python-3.2.3。它还使用了最新的vim-7.3.618,其中包含了我扩展的python/python3解释器支持的补丁(pyeval()/py3eval()函数和vim.bindeval())。

更新:看起来它已经移动到http://tuxproject.de/projects/vim/,但我不再使用预编译的二进制文件(有一个脚本为我交叉编译),因此无法验证这是否属实。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接