external-command – Usa Vim con virtualenv

Pregunta:

Hago mucho Python y uso casi todo el tiempo un virtualenv junto con virtualenvwrapper para mantener mis módulos organizados.

Pero cuando quiero usar esos complementos desde dentro de vim, a través de un comando externo, parece que el shell no está al tanto de esa configuración.

Necesito tener acceso al virtualenv porque

p.ej

(venv) $ python
>> import simple_history
>> # OK here

(venv) $ vim
:!python 
>> import simple_history
ImportError: No module named simple_history

Mi shell es shell=/bin/zsh , supongo que necesito usar esta configuración para acceder a mi virtualenv , pero no puedo entender cómo …

Respuesta:

De hecho, lo arreglé yo mismo hace mucho tiempo. El problema es que cuando ejecuta !python está iniciando un nuevo shell con su entorno existente. Pero esto significa que workon xxxx no fue llamado para activar virtualenv. Esto me $VIRTUAL_ENV mucha confusión ya que se configuró $VIRTUAL_ENV .

Lo ~/.zshenv agregando lo siguiente a mi script ~/.zshenv :

if [[ -n $VIRTUAL_ENV && -e "${VIRTUAL_ENV}/bin/activate" ]]; then
  source "${VIRTUAL_ENV}/bin/activate"
fi

Dado que ~/.zshenv se obtiene dentro de la sesión actual, es una suposición bastante segura que $VIRTUAL_ENV no se activó. Ahora, cuando ejecute !python en Vim, debería usar el intérprete virtualenv. Puede confirmar esto ejecutando :echo system('which python') .

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım