Configurar El Prompt en Zshell Para Trabajar Con Python
Configurar el prompt de zsh
Queremos modificar el prompt para que además de mostrar el entorno virtual de python (cuando haya uno activo) muestre también la versión de Python que usa ese venv
Para añadir la info de git a mi prompt de zsh ya estoy usando el paquete zsh git prompt
Deshabilitar el prompt generado por pyenv
En primer lugar, como tenemos instalado pyenv necesitamos inhibir el comportamiento por defecto de pyenv que muestra el nombre del entorno virtual en el prompt. Para ello, en el fichero ~/.zshrc añadimos las siguientes lineas antes de la activación de pyenv:
|
|
Generamos una función que nos devuelva el venv y la versión de python.
Podemos instalar el plugin de zsh: virtualenv que sirve justamente para instalar una función que devuelve el virtualenv para usarlo en el prompt de zsh. El plugin dejará la función en el directorio de antigen:
antigen/bundles/robbyrussell/oh-my-zsh/plugins/virtualenv/virtualenv.plugin.zsh
Yo he instalado el plugin y modificado la función, también puedes usar la función directamente sin instalar el plugin.pero como de todas formas la tenemos que cambiar pongo aquí el texto completo de la función, ya modificada para añadir la versión de Python. Mi función modificada:
|
|
Editamos el prompt en nuestro tema de zsh favorito
Yo estoy usando el tema gnzh, pero viene a ser lo mismo en cualquier tema. En mi fichero del tema el prompt queda configurado con las siguientes lineas:
|
|
git_super_status
Esta función está definida en el paquete zsh-git-prompt y se encarga de añadir a nuestro prompt la información del repositorio de git (si es que nuestro directorio de trabajo pertenece a un repo de git, claro)
También he modificado esta función para que no muestre nada en el caso de que no estemos en un directorio controlado por git, he modificado la linea echo "$STATUS"del fichero zshrc.sh de zsh-git-prompt:
|
|
En resumen
Con estos cambios mi prompt de zsh:
- No muestra nada si no tenemos un
venvactivo o estamos usando el python del sistema - Nos muestra cualquier Python diferente de
systemque esté activado viapyenv - En el caso de que activemos un
venvespecifico, por ejemplo unvenvde Poetry nos muestra esevenven el prompt