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:
- Ejecute la versión de ejecución en seco del comando
pyenv init
para que pueda ver lo que habría hecho por usted. - Coloque las
PATH
entornoPATH
y shell en su.bash_profile
(o cualquier archivo que use su distro). - 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