我希望这是提出这个问题的正确位置:
我正在尝试使用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
答案 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吗?