work venv for python pyenv

for - python venv



No se puede cambiar Python con pyenv (4)

Esta respuesta es solo para las personas que utilizan Fish Shell y encuentran este hilo. Pyenv usa shims, ref , así que para hacer que pyenv funcione con su shell de pez, debe editar su archivo ~ / .config / fish / config.fish y agregar el directorio pyen shim al comienzo de su variable $ PATH. Aquí es cómo se ve mi config.fish.

### PATH ### set default_path /usr/local/bin /usr/bin /usr/sbin /bin /sbin set macports /opt/local/bin set androiddev ~/Android/ Development/platform-tools/ set rbenv ~/.rbenv/shims/ set pyenv ~/.pyenv/shims/ set anaconda /Users/m4punk/anaconda/bin/ set pg_config /Applications/Postgres.app/Contents/Versions/9.5/bin/ ### Virtual Enviroment Wrapper ### set -g VIRTUALFISH_HOME ~/Documents/Coding/python/virtualenvs set -g VIRTUALFISH_DEFAULT_PYTHON /usr/local/bin/python3 eval (python -m virtualfish) ### NVM Settings ### set -g NVM_DIR ~/.nvm set -gx PATH $pyenv $default_path $macports $androiddev $rbenv $pg_config setenv EDITOR sublime

Las líneas relevantes aquí son

set pyenv ~/.pyenv/shims/

y

set -gx PATH $pyenv $default_path $macports $androiddev $rbenv $pg_config

El primero crea una variable para la ruta pyimv shim, el segundo la agrega al frente de la variable de ruta. Simplemente guarde y cierre, reinicie su sesión de terminal y debería estar todo configurado.

Me gustaría usar pyenv para cambiar python2 y python3.

Descargué exitosamente python2 y python3 y pyenv con los siguientes códigos.

brew install pyenv brew install pyenv-virtualenv pyenv install 2.7.10 pyenv install 3.5.0

Sin embargo, no puedo cambiar de python2 a python3 ..

Soma-Suzuki:~ Soma$ python --version Python 2.7.10 Soma-Suzuki:~ Soma$ pyenv global 2.7.10 Soma-Suzuki:~ Soma$ pyenv versions system * 2.7.10 (set by /Users/Soma/.pyenv/version) 3.5.0 Soma-Suzuki:~ Soma$ pyenv global 3.5.0 Soma-Suzuki:~ Soma$ pyenv global 3.5.0 Soma-Suzuki:~ Soma$ pyenv versions system 2.7.10 * 3.5.0 (set by /Users/Soma/.pyenv/version) Soma-Suzuki:~ Soma$ python --version Python 2.7.10 Soma-Suzuki:~ Soma$

No entiendo por qué sucede esto.

Para tu información. Mi python está en este directorio.

Soma-Suzuki:~ Soma$ which python /usr/bin/python

Gracias de antemano.


Me encontré con el mismo problema y terminé haciendo algunos cambios en la forma en que pyenv init trata de configurar el shell, pero al final funciona de la misma manera. La única diferencia real de la guide en la página de pyenv github es que también tuve que agregar el directorio $(pyenv root)/bin a mi ruta.

La razón por la que hice esto fue para evitar tiempos de inicio de shell largos al ejecutar eval "$(pyenv init -)" y todo el resto del trabajo .bash_profile que se eval "$(pyenv init -)" en mi entorno de shell local. Para ser claro; Pyenv en sí no crea una mala experiencia de shell, en mi humilde opinión, pero cuando trabajas con varios idiomas, todos tienen sus propios sistemas de gestión de versiones y herramientas que les gusta iniciarse desde .profile con pyenv , etc., el shell El proceso de inicialización puede ser lento.

Aquí están los pasos que tomé para establecerme, en una vista alta:

  1. Ejecute la versión de ejecución en seco del comando pyenv init para que pueda ver lo que habría hecho por usted.
  2. Coloque las PATH entorno PATH y shell en su .bash_profile (o cualquier archivo que use su distro).
  3. Coloque la función pyenv init impresa en su .bashrc y .bashrc su .bashrc desde su .bash_profile

Esta es una forma de hacerlo, pero es mejor usar esto como "pseudo-código". Debería intercambiar .bash_profile por el archivo que prefiera su distribución.

$ pyenv init - # use the output for reference, it doesn''t actually do anything $ cat <<EOBP > ~/.bash_profile export PYENV_SHELL=bash PATH=$(pyenv root)/shims:$(pyenv root)/bin:$PATH [ -f /usr/local/Cellar/pyenv/1.2.9/completions/pyenv.bash ] && . /usr/local/Cellar/pyenv/1.2.9/completions/pyenv.bash [ -f ~/.bashrc ] && . ~/.bashrc EOBP

El siguiente bit actualiza su shell con un nuevo bit de lógica que pyenv init la pyenv init seco de pyenv init del paso 1, arriba.

$ cat <<EORC > ~/.bashrc # from $(pyenv init -) pyenv() { local command command="${1:-}" if [ "$#" -gt 0 ]; then shift fi case "$command" in rehash|shell) eval "$(pyenv "sh-$command" "$@")";; *) command pyenv "$command" "$@";; esac } EORC


Olvidó agregar este eval "$(pyenv init -)" a la primera línea en el archivo .bash_profile (si está usando una Mac) o un archivo .bashrc.


prueba esto: eval "$ (pyenv init -)"

ejemplo:

$ python -V Python 2.7.9 mac:~ $ eval "$(pyenv init -)" mac:~ $ python -V Python 3.5.0

más información: https://github.com/yyuu/pyenv