Компиляция gVim с поддержкой Python 3 - PullRequest
2 голосов
/ 10 февраля 2010

Я надеюсь, что это правильное место, чтобы задать этот вопрос:

Я пытаюсь скомпилировать gVim с поддержкой Python 3, используя cygwin под windows:

Я изменил раздел Python для файлов Make_cyg.mak на следующий:

##############################
# 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

Я использую портативную установку Python из Portable Python . Я не знаю, может ли это быть источником ошибки.

Я надеюсь, что кто-то знает, как скомпилировать vim с поддержкой Python 3 (если я только скомпилирую его с поддержкой ruby, он скомпилируется прекрасно).

Заранее спасибо,

Gjallar

Ответы [ 2 ]

4 голосов
/ 20 апреля 2010

Я скомпилировал vim с поддержкой python3. Вот обновление Patch для vim 7.2.411.

Инструкции по составлению см. В письме от 22 сентября 2009 года на

groups.google.com / группа / vim_dev / browse_frm / месяц / 2009-09

(добавление второй гиперссылки не сработало)

1 голос
/ 10 февраля 2010

Здесь много чего происходит одновременно. Прежде всего, зачем вам Python 3.0? Если вы действительно хотите Python 3, вам следует использовать Python 3.1.

Во-вторых, что означает "поддержка Python 3" в случае gVim? Это сделать расширения с помощью Python? Тогда вам не нужна поддержка Python 3, так как любое расширение, существующее для gVim, будет написано для Python 2.

И да, кажется очень странным использовать переносной Python. Поскольку вы компилируете gVim с помощью cygwin, вам следует разумно использовать Python, скомпилированный с тем же Cygwin.

Разве обычный gvim для Windows не поддерживает Python?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...