vim comstack con la versión incorrecta de Python (y no funciona con la versión necesaria)

En breve:

Tengo un problema con la comstackción de vim con la versión de python preferida.
Cuando uso --enable-pythoninterp se comstack con la versión del sistema OSX python.
Cuando uso --enable-pythoninterp=dynamic , obtengo un error en vim al intentar :py import sys

Aquí está lo que estaba haciendo con más detalle:

 % git clone https://github.com/b4winckler/macvim.git % cd macvim % ./configure --enable-pythoninterp \ --with-python-config-dir=/usr/local/lib/python2.7/config <- this option has no affects on result ... checking for python... /usr/local/bin/python checking Python version... 2.7 checking Python is 1.4 or better... yep checking Python's install prefix... /usr/local checking Python's execution prefix... /usr/local checking Python's configuration directory... /usr/local/lib/python2.7/config ... % make ... ** BUILD SUCCEEDED ** % open src/MacVim/build/Release/MacVim.app 

En el MacVim abierto escribo:

 :py import sys; print (sys.version, sys.executable) ('2.6.1 (r261:67515, Jun 24 2010, 21:47:49) [GCC 4.2.1 (Apple Inc. build 5646)]', '/usr/bin/python') 

¿Por qué 2.6.1 ?
¿Por qué /usr/bin/python ?
¡Mi python por defecto es 2.7! Y vive en /usr/local/bin/python
Estuve buscando solución todo el día. Y lo encontré. Es = atributo dynamic (pero esta solución no tenía explicación).

Después de eso intenté comstackr vim con python dynamic:

 % ./configure --enable-pythoninterp=dynamic ... output the same ... % make % open src/MacVim/build/Release/MacVim.app 

En MacVim abierto:

 :py import sys 

Y aquí viene un error:

 E370: Could not load library libpython2.7.a E263: Sorry, this command is disabled, the Python library could not be loaded. 

Mi versión de OSX es 10.6.8.
La versión predeterminada de Python es 2.7.

 % which python /usr/local/bin/python 

¿Alguien puede explicar cómo python se está integrando en vim durante la comstackción?
¿Y cómo solucionar el error con libpython2.7.a?


actualización : ya no tengo el entorno descrito en la pregunta. Así que no pude probar nuevas respuestas. Pero la parte restante de la humanidad agradecerá su ayuda.

Yo tuve el mismo problema. Compilé Macvim desde la fuente e intenté usar la versión 2.7 de Python desde macports en:

 /opt/local/bin/python 

Algunos módulos no fueron encontrados, por ejemplo el módulo os. La razón de esto fue que la variable PYTHONPATH dentro de macvim es incorrecta.

Para probar, abre macvim y escribe:

 :python print sys.path 

Tengo las siguientes rutas (note el final, que es una tontería):

 ... /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.5/' ... 

Supongo que el motivo está en el indicador de vinculador “-framework Python”. Esto recoge el error, es decir, el marco del sistema python. Si cambio la línea en el script src/auto/configure desde:

 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \ "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then vi_cv_path_python_plibs="-framework Python" 

a

 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \ "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then vi_cv_path_python_plibs="-F/opt/local/Library/Frameworks -framework Python" 

Al ejecutar la configuración nuevamente, después de limpiar, Macvim comstack y funciona como se espera. El indicador -F le dice al enlazador en qué directorio encontrar el siguiente marco. Macports instala el archivo Python.framework en este directorio, YMMV.

Tuve el mismo problema que tú (tratando de comstackr MacVim con Python 2.7) y finalmente lo logré.

¡Primero la opción dynamic no funciona ! He visto esa sugerencia también en la red, pero si miras el script de configuración (o solo la ayuda) no se reconoce. Por lo tanto no lo uses . Eso es equivalente a desactivar Python, lo que explica por qué: py no funciona. No has comstackdo MacVim con Python.

Lo que hice al final fue reinstalar Python 2.7.2 usando el instalador oficial en el sitio web de Python. Debería tener una config en /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config .

Intenta comstackr de nuevo con las siguientes opciones

 % ./configure --enable-pythoninterp \ --with-python-config-dir=/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config/python2.7/config 

Eso me dio un error al final de la comstackción, pero si lo ignoro y ejecuto el binario, de todos modos, funciona. Este problema puede ser específico para mi computadora (parece estar relacionado con la instalación del icono ). Buena suerte.

Tenga en cuenta que esa es la forma en que logré comstackr MacVim con Python 2.7 (que era mi objective) no necesariamente la forma de comstackrlo con mi versión en tiempo de ejecución de Python.

Asegúrese de que el “python” correcto esté en su $ PATH, lo que podría no ser el caso cuando use “sudo”.

Hay una opción para configurar el binario de python que se usará (si no puede modificar $ PATH):

 export vi_cv_path_python=/usr/local/bin/python 

Pero aún así, con enable-pythoninterp=dynamic no pudo cargar libpython2.7.a al ejecutar “: python import sys”, diciendo “E448: No se pudo cargar la función de biblioteca _PyArg_Parse_SizeT”.

Mi solución fue eliminar el archivo de configuración de la memoria caché que se creó a partir de una versión anterior donde utilicé la python que venía con OSX.

Luego instalé una nueva versión de python con homebrew y no pude .configure para tomar la nueva versión de python, a pesar de que actualicé mi variable PATH y que python mostraba la versión correcta de python.

Eliminar el archivo de caché y ejecutar la configuración de nuevo resolvió mi problema.

 rm src/auto/config.cache ./configure --enable-pythoninterp 

Tal vez ayude a alguien.

Parece que la raíz de su problema radica en que Python está buscando en el directorio incorrecto. Esa debe ser la primera parte que busca corregir, antes de preocuparse por la integración en vim. Todos los Mac vienen con una versión de Python ya instalada en su máquina, en / usr / local / bin / python. Generalmente, para cuando obtiene la máquina, desea instalar una versión más reciente de Python. La nueva versión debe estar ubicada:

 % which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python 

Para empezar, no sé cómo instaló Python, pero la forma más fácil es easy_install o pip. Este es un buen enlace . Si eso no resuelve el problema de tu camino, entonces deberías verlo aquí . Esperemos que esto sea todo lo que necesita y el problema con vim se resolverá.

Encontré que la respuesta anterior es peligrosa: causó errores fatales al cerrar los buffers en macvim.

La respuesta encontrada aquí es mucho más estable: Vim no comstack con python en OS X

Acabo de tener exactamente el mismo deseo, y MacPorts lo cumplió sin ningún problema adicional:

 $ port info macvim MacVim @7.3.snapshot66, Revision 2 (editors) Variants: big, cscope, [+]huge, perl, python, python25, python26, python27, python31, python32, python33, ruby, ruby19, tcl, universal, xim ... $ sudo port install macvim +python27 ---> Computing dependencies for MacVim ---> Fetching archive for MacVim ---> Attempting to fetch MacVim-7.3.snapshot66_2+huge+python27.darwin_10.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/MacVim ---> Attempting to fetch MacVim-7.3.snapshot66_2+huge+python27.darwin_10.x86_64.tbz2 from http://packages.macports.org/MacVim ---> Attempting to fetch MacVim-7.3.snapshot66_2+huge+python27.darwin_10.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/MacVim ---> Fetching distfiles for MacVim ---> Verifying checksum(s) for MacVim ---> Extracting MacVim ---> Applying patches to MacVim ---> Configuring MacVim ---> Building MacVim ---> Staging MacVim into destroot ---> Installing MacVim @7.3.snapshot66_2+huge+python27 ---> Deactivating MacVim @7.3.snapshot66_2+huge ---> Cleaning MacVim ---> Activating MacVim @7.3.snapshot66_2+huge+python27 ---> Cleaning MacVim ---> Updating database of binaries: 100.0% ---> Scanning binaries for linking errors: 100.0% ---> No broken files found. 

Nota: Como puede ver arriba ( deactivating ), probé el MacVim predeterminado (precomstackdo) primero (es decir, sudo port install macvim -> MacVim @7.3.snapshot66_2+huge ), y no tenía el soporte de Python comstackdo en .

Después de agregar la variante +python27 , ejecuta :py import sys; print (sys.version, sys.executable) :py import sys; print (sys.version, sys.executable) dentro del MacVim recién instalado ahora devuelve:

 ('2.7.3 (default, Oct 22 2012, 06:12:28) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]', '/Applications/MacPorts/MacVim.app/Contents/MacOS/Vim') 

que pasa a ser el mismo que tengo en mi shell (dependiendo de su $PATH y la port select python ):

 $ which python /opt/local/bin/python $ python Python 2.7.3 (default, Oct 22 2012, 06:12:28) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin ... 

La solución que encontré para este problema implicaba eliminar la fuente y volver a adquirirla. Estoy seguro de que hg tiene una manera de simplemente eliminar los cambios locales, pero realmente no pude encontrarlo en el archivo de ayuda. No utilicé MacVim, pero sospecho que su problema es por la misma razón.

Mirando a través de la salida del script de configuración, parece que almacena en caché la instalación de python que usó anteriormente y solo usa eso.