使用Python 3支持编译gVim

时间:2010-02-10 10:48:49

标签: python vim compilation python-3.x

我希望这是提出这个问题的正确位置:

我正在尝试使用windows下的cygwin编译支持python 3的gVim:

我将Make_cyg.mak文件Python部分更改为以下内容:

##############################
# DYNAMIC_PYTHON=yes works.
# DYNAMIC_PYTHON=no does not (unresolved externals on link).
##############################
ifdef PYTHON
DEFINES += -DFEAT_PYTHON
INCLUDES += -I$(PYTHON)/include
EXTRA_OBJS += $(OUTDIR)/if_python.o

ifndef DYNAMIC_PYTHON
DYNAMIC_PYTHON = yes
endif

ifndef PYTHON_VER
PYTHON_VER = 30
endif

ifeq (yes, $(DYNAMIC_PYTHON))
DEFINES += -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\"
else
EXTRA_LIBS += $(PYTHON)/libs/python$(PYTHON_VER).lib
endif
endif

但是在跑步时:

$ make -f Make_cyg.mak OLE=Yes PYTHON=/cygdrive/p/Applications/PortablePython_1.1_py3.0.1/App/ RUBY=/cygdrive/c/Programme/Ruby/

这会导致以下错误:

In file included from /cygdrive/p/Applications/PortablePython_1.1_py3.0.1/App//i
nclude/Python.h:70,
                 from if_python.c:43:
/cygdrive/p/Applications/PortablePython_1.1_py3.0.1/App//include/bytesobject.h:1
04:1: warning: "F_BLANK" redefined
In file included from globals.h:1554,
                 from vim.h:1831,
                 from if_python.c:20:
farsi.h:74:1: warning: this is the location of the previous definition
if_python.c:729: warning: initialization makes integer from pointer without a ca
st
if_python.c:733: warning: initialization from incompatible pointer type
if_python.c:734: warning: initialization from incompatible pointer type
if_python.c:735: warning: initialization from incompatible pointer type
if_python.c:737: error: `cmpfunc' undeclared here (not in a function)
if_python.c:737: error: initializer element is not constant
if_python.c:737: error: (near initialization for `OutputType.tp_repr')
if_python.c:737: error: parse error before numeric constant
/** more errors **/
if_python.c:2256: warning: initialization from incompatible pointer type
if_python.c:2257: warning: initialization from incompatible pointer type
if_python.c: In function `PythonMod_Init':
if_python.c:2351: error: structure has no member named `ob_type'
if_python.c:2352: error: structure has no member named `ob_type'
if_python.c:2353: error: structure has no member named `ob_type'
if_python.c:2354: error: structure has no member named `ob_type'
if_python.c:2355: error: structure has no member named `ob_type'
if_python.c:2356: error: structure has no member named `ob_type'
make: *** [gobj/if_python.o] Error 1

我正在使用Portable Python的便携式python安装。我不知道这可能是错误的来源。

我希望有人知道如何使用python 3支持编译vim(如果我只使用ruby支持编译它,它编译得很好)。

提前致谢,

Gjallar

2 个答案:

答案 0 :(得分:4)

我已经用python3支持编译了vim。以下是针对vim 7.2.411更新的Patch

有关编辑说明,请查看我在2009年9月22日发送的邮件

  

groups.google.com/group/vim_dev/browse_frm/month/2009-09

(添加第二个超链接不起作用)

答案 1 :(得分:1)

这里有很多事情在发生。首先,为什么要使用Python 3.0?如果你真的想要Python 3,那么你应该使用Python 3.1。

其次,对于gVim,“Python 3支持”是什么意思?是用Python进行扩展吗?那么你不需要Python 3支持,因为gVim存在的任何扩展都是为Python 2编写的。

是的,使用便携式python似乎很奇怪。由于您使用cygwin编译gVim,因此您应该合理地使用使用相同Cygwin编译的Python。

Windows的普通gvim不支持Python吗?