Powerline: Actualice MacOS a Mojave, luego vim obtiene un error con powerline

Creado en 25 sept. 2018  ·  34Comentarios  ·  Fuente: powerline/powerline

error de la siguiente manera:

Error detected while processing /Users/vvqboy/.vimrc:
line    8:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/vvqboy/Library/Python/2.7/lib/python/site-packages/powerline/__init__.py", line 11, in <module>
    from powerline.lib.config import ConfigLoader
  File "/Users/vvqboy/Library/Python/2.7/lib/python/site-packages/powerline/lib/config.py", line 11, in <module>
    from powerline.lib.threaded import MultiRunnedThread
  File "/Users/vvqboy/Library/Python/2.7/lib/python/site-packages/powerline/lib/threaded.py", line 7, in <module>
    from powerline.lib.monotonic import monotonic
  File "/Users/vvqboy/Library/Python/2.7/lib/python/site-packages/powerline/lib/monotonic.py", line 19, in <module>
    import ctypes
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 555, in <module>
    _reset_cache()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 279, in _reset_cache
    CFUNCTYPE(c_int)(lambda: None)
MemoryError
line    9:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'powerline_setup' is not defined
line   10:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'powerline_setup' is not defined
Traceback (most recent call last):
  File "<string>", line 4, in <module>
  File "/Users/vvqboy/Library/Python/2.7/lib/python/site-packages/powerline/__init__.py", line 11, in <module>
    from powerline.lib.config import ConfigLoader
  File "/Users/vvqboy/Library/Python/2.7/lib/python/site-packages/powerline/lib/config.py", line 11, in <module>
    from powerline.lib.threaded import MultiRunnedThread
  File "/Users/vvqboy/Library/Python/2.7/lib/python/site-packages/powerline/lib/threaded.py", line 7, in <module>
    from powerline.lib.monotonic import monotonic
  File "/Users/vvqboy/Library/Python/2.7/lib/python/site-packages/powerline/lib/monotonic.py", line 19, in <module>
    import ctypes
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 555, in <module>
    _reset_cache()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 279, in _reset_cache
    CFUNCTYPE(c_int)(lambda: None)
MemoryError
An error occurred while importing powerline module.
This could be caused by invalid sys.path setting,
or by an incompatible Python version (powerline requires
Python 2.6, 2.7 or 3.2 and later to work). Please consult
the troubleshooting section in the documentation for
Vim: Caught deadly signal SEGV

Vim: Finished.
[1]    7428 segmentation fault  vi .vimrc
cvim macos serror in environment bug

Comentario más útil

¡¡SOLUCIÓN!!

1) Averigüe su versión actual de vim. El mío _no_ se compiló con homebrew, pero era la versión predeterminada del sistema, que fue recompilada por Apple para el lanzamiento de Mojave (mirando la fecha). Creo que la declaración anterior es precisa, según la fecha de compilación, pero corrígeme si me equivoco. Ejecute vim --version y debería ver que ha sido compilado por [email protected] .

2) Elegí desinstalar la versión elaborada de python @ 2 , e instalé Python a través de brew (se instala 3.7.0 por defecto en el momento de escribir este artículo), y _no_ lo vinculé. Lo dejé ahí. Lea algún foro que indique que no se compila con brew python a menos que esté instalado. @ ZyX-I ¿tal vez sepas más sobre esto?

3) Después de brew install python , use homebrew para instalar vim usando el comando brew install vim . Luego, ejecute /usr/local/bin/vim --version y asegúrese de que python3 tenga un signo '+' al lado. Reinicie su shell, y luego /.vimrc debería leer: /Library/Python/2.7/site-packages/powerline/powerline/bindings/vim/ o cualquier directorio que esté mirando.

.... ¡y debería estar funcionando!

Editar: algo de gramática, escribí esto sin café.

Todos 34 comentarios

vimrc de la siguiente manera:

set rtp+=/Users/vvqboy/Library/Python/2.7/lib/python/site-packages/powerline/bindings/vim

" These lines setup the environment to show graphics and colors correctly.
set nocompatible
set t_Co=256

let g:minBufExplForceSyntaxEnable = 1
python from powerline.vim import setup as powerline_setup
python powerline_setup()
python del powerline_setup

if ! has('gui_running')
   set ttimeoutlen=10
   augroup FastEscape
      autocmd!
      au InsertEnter * set timeoutlen=0
      au InsertLeave * set timeoutlen=1000
   augroup END
endif

set laststatus=2 " Always display the statusline in all windows
set guifont=Inconsolata\ for\ Powerline:h14
set noshowmode " Hide the default mode text (e.g. -- INSERT -- below the statusline)

set nu
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab

Yo intento

pip install --upgrade --force-reinstall  --user powerline-status

Collecting powerline-status
  Downloading https://files.pythonhosted.org/packages/9c/30/8bd3c62642778af9ad813a526c6ff7dd2f98144d6580ad6fab94ca389265/powerline-status-2.7.tar.gz (233kB)
    100% |████████████████████████████████| 235kB 69kB/s
Building wheels for collected packages: powerline-status
  Running setup.py bdist_wheel for powerline-status ... done
  Stored in directory: /Users/vvqboy/Library/Caches/pip/wheels/c4/81/6b/bb1f440b9999fcfda2a1ccdf7b57a886acb08ea3e9e794945d
Successfully built powerline-status
Installing collected packages: powerline-status
  Found existing installation: powerline-status 2.6
    Uninstalling powerline-status-2.6:
      Successfully uninstalled powerline-status-2.6
Successfully installed powerline-status-2.7

entonces sigue recibiendo error

Vim: Caught deadly signal SEGV
Error detected while processing /Users/vvqboy/.vimrc:Vim: Finished.

line    8:
Exception MemoryError: MemoryError() in <module 'threading' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.pyc'> ignored
[1]    1788 segmentation fault  vi .vimrc

Python --versión
Python 2.7.10

Oye, el mismo error aquí. Probé un par de arreglos usando brew (pensé que podría ser un problema de enlace simbólico), pero todo parece estar bien allí, y mi pyenv parece estar bien.

Aquí está el error que tengo para estar doblemente seguro (y esto también sucedió después de la actualización de Moajve para mí):

An error occurred while importing powerline module.
This could be caused by invalid sys.path setting,
or by an incompatible Python version (powerline requires
Python 2.6, 2.7 or 3.2 and later to work). Please consult
the troubleshooting section in the documentation for
possible solutions.
Error detected while processing 
...
line  157:
Traceback (most recent call last):
  File "<string>", line 53, in <module>
  File "<string>", line 9, in powerline_troubleshoot
  File "/Users/.../Library/Python/2.7/lib/python/site-packages/powerline/__init__.py", line 11, in <module>
    from powerline.lib.config import ConfigLoader
  File "/Users/.../Library/Python/2.7/lib/python/site-packages/powerline/lib/config.py", line 11, in <module>
    from powerline.lib.threaded import MultiRunnedThread
  File "/Users/.../Library/Python/2.7/lib/python/site-packages/powerline/lib/threaded.py", line 7, in <module>
    from powerline.lib.monotonic import monotonic
  File "/Users/.../Library/Python/2.7/lib/python/site-packages/powerline/lib/monotonic.py", line 19, in <module>
    import ctypes
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 555, in <module>
    _reset_cache()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 279, in _reset_cache
    CFUNCTYPE(c_int)(lambda: None)
MemoryError

Curiosamente, señalar la ruta al archivo _actual_ powerline.vim cargará vim bien y no arrojará ningún error, pero tampoco cargará la línea eléctrica.

/Library/Python/2.7/site-packages/powerline/powerline/bindings/vim/plugins/powerline.vim

Vim se aleja felizmente SIN cargar powerline ... Además, mi tmux conf carga powerline muy bien, así que creo que este es un problema específico de vim-powerline. Investigaré un poco y me pondré en contacto contigo.

Editar: Cambiar a la versión del sistema de Python y ejecutar un shell interactivo me permitió ejecutar
from powerline.vim import VimPowerLine sin ningún tipo de molestia.

Por la razón que sea, no puedo comentar la línea CTYPES (algunos errores de permisos, investigaré más adelante), pero no puedo rastrear el archivo de origen donde realmente se está haciendo la asignación de memoria. ¿Alguien sabe dónde existe este archivo, o si esa es la forma correcta de proceder?

¿La versión de Python Vim se compiló con la versión de Python que Vim está usando realmente? MemoryError y luego SEGV al importar ctypes indica problemas con la instalación de Python, no problemas de línea eléctrica. Debería tener el mismo problema (al menos, MemoryError, aunque no estoy seguro de lo que realmente significa: ¿quizás, el asignador de memoria devuelve NULL?) Si deshabilita la línea eléctrica y hace :python import ctypes en vim.

Bingo, eso no funcionó. Sin embargo, estaba funcionando absolutamente bien antes de la actualización de MacOS Mojave.

Error +1 después de actualizar a mojave

Traceback (most recent call last):
  File "<string>", line 4, in <module>
  File "/Users/zzs/Library/Python/2.7/lib/python/site-packages/powerline/__init__.py", line 11, in <module>
    from powerline.lib.config import ConfigLoader
  File "/Users/zzs/Library/Python/2.7/lib/python/site-packages/powerline/lib/config.py", line 11, in <module>
    from powerline.lib.threaded import MultiRunnedThread
  File "/Users/zzs/Library/Python/2.7/lib/python/site-packages/powerline/lib/threaded.py", line 7, in <module>
    from powerline.lib.monotonic import monotonic
  File "/Users/zzs/Library/Python/2.7/lib/python/site-packages/powerline/lib/monotonic.py", line 19, in <module>
    import ctypes
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 555, in <module>
    _reset_cache()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 279, in _reset_cache
    CFUNCTYPE(c_int)(lambda: None)
MemoryError
An error occurred while importing powerline module.
This could be caused by invalid sys.path setting,
or by an incompatible Python version (powerline requires
Python 2.6, 2.7 or 3.2 and later to work). Please consult
the troubleshooting section in the documentation for
possible solutions.
Error detected while processing /usr/local/lib/python2.7/site-packages/powerline/bindings/vim/plugin/powerline.vim:
line  157:
Traceback (most recent call last):
  File "<string>", line 53, in <module>
  File "<string>", line 9, in powerline_troubleshoot
  File "/Users/zzs/Library/Python/2.7/lib/python/site-packages/powerline/__init__.py", line 11, in <module>
    from powerline.lib.config import ConfigLoader
  File "/Users/zzs/Library/Python/2.7/lib/python/site-packages/powerline/lib/config.py", line 11, in <module>
    from powerline.lib.threaded import MultiRunnedThread
  File "/Users/zzs/Library/Python/2.7/lib/python/site-packages/powerline/lib/threaded.py", line 7, in <module>
    from powerline.lib.monotonic import monotonic
  File "/Users/zzs/Library/Python/2.7/lib/python/site-packages/powerline/lib/monotonic.py", line 19, in <module>
    import ctypes
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 555, in <module>
    _reset_cache()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 279, in _reset_cache
    CFUNCTYPE(c_int)(lambda: None)
MemoryError
Press ENTER or type command to continue

¿La versión de Python Vim se compiló con la versión de Python que Vim está usando realmente? MemoryError y luego SEGV al importar ctypes indica problemas con la instalación de Python, no problemas de línea eléctrica. Debería tener el mismo problema (al menos, MemoryError, aunque no estoy seguro de lo que realmente significa: ¿quizás, el asignador de memoria devuelve NULL?) Si deshabilita la línea eléctrica y hace :python import ctypes en vim.

Así que estaba funcionando bien _justo antes_ de la actualización. Mi configuración de zsh y tmux también funciona bien con los otros enlaces.

Al ejecutar el comando: :python import ctypes en vim, obtengo el mismo error (el error CTYPE) que se muestra arriba. Me pregunto qué cambió Apple en la versión enviada de Apple-Python, o realmente, si cambiaron algo. Lo intentaré un poco más tarde esta noche y volveré.

Zsh y tmux usan el intérprete de Python en un proceso separado (a menos que esté usando zsh con libzpython, pero no hay equivalente de tmux). Vim está cargando Python como una biblioteca dinámica a través de dlopen o simplemente se vincula con él, que es más frágil, y si alguna vez cambia la versión de Python, debe volver a compilar Vim con la nueva o corre el riesgo de tener problemas. No estoy seguro de cómo las diferencias en las versiones pueden hacer que la importación de ctypes funcione mal tan tarde (normalmente no se ejecutará :python , o algunas veces puede fallar), pero es una posible explicación.

Otro es la diferencia entre el sistema y la versión Homebrew de Python. No tengo Mac y no puedo decir cuál se supone que Vim debe cargar de los dos y cómo lo hace exactamente, pero esta es otra explicación común de los problemas con (aplicación (vim, etc.)) + configuración de Python en Mac, y puede causar varios tipos de errores en la importación.

@ ZyX-I oooo lo tengo. ¿Tiene un documento que describa el proceso? No tenía idea de cómo funcionaba.

¡Déjame volver a compilar vim con la versión del sistema y ver qué pasa!

¡¡SOLUCIÓN!!

1) Averigüe su versión actual de vim. El mío _no_ se compiló con homebrew, pero era la versión predeterminada del sistema, que fue recompilada por Apple para el lanzamiento de Mojave (mirando la fecha). Creo que la declaración anterior es precisa, según la fecha de compilación, pero corrígeme si me equivoco. Ejecute vim --version y debería ver que ha sido compilado por [email protected] .

2) Elegí desinstalar la versión elaborada de python @ 2 , e instalé Python a través de brew (se instala 3.7.0 por defecto en el momento de escribir este artículo), y _no_ lo vinculé. Lo dejé ahí. Lea algún foro que indique que no se compila con brew python a menos que esté instalado. @ ZyX-I ¿tal vez sepas más sobre esto?

3) Después de brew install python , use homebrew para instalar vim usando el comando brew install vim . Luego, ejecute /usr/local/bin/vim --version y asegúrese de que python3 tenga un signo '+' al lado. Reinicie su shell, y luego /.vimrc debería leer: /Library/Python/2.7/site-packages/powerline/powerline/bindings/vim/ o cualquier directorio que esté mirando.

.... ¡y debería estar funcionando!

Editar: algo de gramática, escribí esto sin café.

Tengo el mismo error cuando actualicé a Mojave.
line 63: Traceback (most recent call last): File "<string>", line 1, in <module> File "/Users/xxx/Library/Python/2.7/lib/python/site-packages/powerline/__init__.py", line 11, in <module> from powerline.lib.config import ConfigLoader File "/Users/xxx/Library/Python/2.7/lib/python/site-packages/powerline/lib/config.py", line 11, in <module> from powerline.lib.threaded import MultiRunnedThread File "/Users/xxxx/Library/Python/2.7/lib/python/site-packages/powerline/lib/threaded.py", line 7, in <module> from powerline.lib.monotonic import monotonic File "/Users/xxx/Library/Python/2.7/lib/python/site-packages/powerline/lib/monotonic.py", line 19, in <module> import ctypes File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 555, in <module> _reset_cache() File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 279, in _reset_cache CFUNCTYPE(c_int)(lambda: None) MemoryError line 64: Traceback (most recent call last): File "<string>", line 1, in <module> NameError: name 'powerline_setup' is not defined line 65: Traceback (most recent call last): File "<string>", line 1, in <module> NameError: name 'powerline_setup' is not defined
Después de volver a Python predeterminado del sistema, todavía tengo el mismo error.

@zhongruizhi, ¿

@anirrudh
gracias, pero parece que su solución no es adecuada para mi condición. No estoy usando brew, y estoy usando el python predeterminado del sistema (2.7.10) y vim. (+ Python / dyn -python3).

@anirrudh me funciona de verdad, una buena solución, muchas gracias

@zhongruizhi También solía tener la versión estándar de vim proporcionada por Apple, pero parece estar rota para powerline, la única solución parece ser instalar vim a través de brew, y en cuanto a las versiones de Python, lo abordo en mi publique arriba, pero debe asegurarse de que + python3 sea una cosa, no + python / dyn, ¡que era exactamente lo que mi apple proporcionó a vim!

@anirrudh Gracias por averiguar los detalles. Y funciona.

Encontré la razón y una solución que creo que es más elegante:
CFUNCTYPE en la función _reset_cache () en el archivo:
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py
obtener error de memoria.
Luego salté a este archivo y encontré dicho código:

265 def _reset_cache():
266     _pointer_type_cache.clear()
267     _c_functype_cache.clear()
268     if _os.name in ("nt", "ce"):
269         _win_functype_cache.clear()
270     # _SimpleCData.c_wchar_p_from_param
271     POINTER(c_wchar).from_param = c_wchar_p.from_param
272     # _SimpleCData.c_char_p_from_param
273     POINTER(c_char).from_param = c_char_p.from_param
274     _pointer_type_cache[None] = c_void_p
275     # XXX for whatever reasons, creating the first instance of a callback
276     # function is needed for the unittests on Win64 to succeed.  This MAY
277     # be a compiler bug, since the problem occurs only when _ctypes is
278     # compiled with the MS SDK compiler.  Or an uninitialized variable?
279     CFUNCTYPE(c_int)(lambda: None)

Como puede ver, la función CFUNCTYPE en la línea 279 es agregada por unittest en Win64 por cualquier razón. Para los usuarios de mac, esta línea es inútil y provoca un error de memoria en macOS. Así que comento la línea 279 y vuelvo a ejecutar vim, no hay errores con powerline.

Más detalles:
El archivo __init__.py es un archivo de solo lectura del sistema, y ​​debe ejecutar el comando csrutil disable en el modo de recuperación de mac (presione el comando + R al arrancar) para deshabilitar la protección de integridad del sistema. Después de reiniciar, puede editar este archivo con permiso de root.

brew install vim --with-lua --with-override-system-vi
y reiniciar shell, fijo

https://github.com/Valloric/YouCompleteMe/issues/3165#issuecomment -425616700

Gracias @ Joshua-Chang

Funcionó para mi

gracias @ Joshua-Chang
vim está bien, pero vi todavía está mal
`Vim: Atrapó la señal mortal SEGV
Error detectado durante la función de procesamiento70_PollServerReady [7] ..70_ Pyeval: Vim : Terminado.

línea 4:
Excepción MemoryError: MemoryError () enignorado
Fallo de segmentación: 11`

vim está bien, pero vi todavía está mal

tal vez haya una mejor resolución, pero la arreglé agregando alias vi="vim" en mi archivo rc de shell

Tengo el mismo problema con @ always77 cuando uso commad git commit --amend .

@kyriejoshua

prueba la sugerencia de @ Joshua-Chang, me funciona.

prueba la sugerencia de @ Joshua-Chang, me funciona.

Lo intenté.
Funciona cuando uso vim directamente, pero sigue siendo incorrecto cuando ejecuto el comando git commit --amend o trato de solucionar conflictos en la línea de comandos.

Finalmente, resolví este problema leyendo este artículo. @ siempre77
https://ltaoo.github.io/2018/10/22/%E6%9B%B4%E6%96%B0%20macOS%20Mojave%20%E5%90%8E%20vim%20%E6%89%93 % E4% B8% 8D% E5% BC% 80 /

@kyriejoshua ¿Te importa compartir la solución?

Es mi solucion @josephtyler

cd ~/.vim/bundle/YouCompleteMe
git pull
git submodule update --init --recursive.
python install.py

y reiniciar shell, fijo

Para los usuarios de YCM, utilice los contactos de YCM

Estamos rastreando un problema similar con el sistema Vim aquí: https://github.com/Valloric/YouCompleteMe/issues/3271

Alerta de spoiler: creo que es algo de Mojave, no de YCM.

Para mí, el problema comenzó a aparecer después de que Mojave instaló una "actualización crítica" (por ejemplo, he estado en Mojave durante años con vim / powerline funcionando bien). Resulta que fue simplemente un caso de uso incorrecto de vim (por ejemplo, /usr/bin/vim , vim integrado de Apple) en lugar de mi vim de /usr/local/bin/vim . Fue solo un caso de arreglar mi PATH ; la actualización probablemente lo reordenó.

Acabo de comenzar a usar una mac con una nueva instalación de Mojave y tengo este problema, debe tenerse en cuenta que estoy usando python3.7.

Lo resolví haciendo lo siguiente:

brew install vim
echo "alias vim=/usr/local/Cellar/vim/<VIM_VERSION>/bin/vim" >> ~/.bash_profile

Simplemente reemplace VIM_VERSION con la versión de vim que brew instalada en la primera línea.

Puede agregar otra confirmación de que esto está relacionado con la actualización de macOS Mojave. Voy a tener que hacer un trabajo de comparación con otra máquina que NO se ha actualizado todavía para ver qué bibliotecas del sistema cambiaron. Estoy seguro de que es algo que cambió en la instalación predeterminada de Python 2.7 (.10) o algo con una biblioteca relacionada.

Tenía este mismo problema viniendo de bash a zsh, lo que lo solucionó fue exportar mi PATH . export PATH=$HOME/bin:/usr/local/bin:$PATH

Ya tenía python 3.7.3, vim (la versión incluida de macvim compilada por [email protected]), y ya tenía Mojave. Solo estaba haciendo la transición a zsh.

Así que me estoy golpeando la cabeza contra una pared tratando de averiguar por qué esto no funciona para mí el día después de que me veo obligado a actualizar mi computadora portátil de trabajo a Mojave. Seguí las guías anteriores y conseguí que la línea eléctrica funcionara en vim nuevamente, pero por mi VIDA, no funcionaría correctamente cuando intento git commit .

Revisé dos veces en mi .zshrc que tenía mi editor configurado en vim . Entonces alias vi=vim , y todavía no hay dados.

Luego, después de reinstalar powerline y vim unas cien veces diferentes, lo noté en el mensaje de error (este es un mensaje de error mucho más pequeño después de reiniciar la ventana de mi terminal nuevamente y NO iniciar tmux ni nada más:

Vim: Caught deadly signal SEGV
Vim: Finished.
error: /usr/bin/vim died of signal 11
error: There was a problem with the editor '/usr/bin/vim'.
Please supply the message using either -m or -F option.

Allí mismo: /usr/bin/vim

Así que verifiqué dos veces, y bajo y he aquí en mi .gitconfig tenía las siguientes líneas:

[core]
editor = /usr/bin/vim

Entonces eso se cambió a solo editor = vim

TL; DR : Si aún tiene problemas con la instalación de git commit vim, verifique que su .gitconfig no esté apuntando al sistema vim.

¿Fue útil esta página
0 / 5 - 0 calificaciones