Pyenvを使用してpython2とpython3を切り替えたいです。
次のコードでpython2とpython3とpyenvを正常にダウンロードしました。
brew install pyenv
brew install pyenv-virtualenv
pyenv install 2.7.10
pyenv install 3.5.0
ただし、python2から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$
これが起こる理由はわかりません。
ご参考までに。 My pythonはこのディレクトリにあります。
Soma-Suzuki:~ Soma$ which python
/usr/bin/python
前もって感謝します。
これを試してください:eval "$(pyenv init-)"
例:
$ python -V
Python 2.7.9
mac:~ $ eval "$(pyenv init -)"
mac:~ $ python -V
Python 3.5.0
このeval "$(pyenv init -)"
を.bash_profileファイル(Macを使用している場合)または.bashrcファイルの1行目に追加するのを忘れていました。
この答えは、フィッシュシェルを使用していて、このスレッドを見つけた人のみを対象としています。 Pyenvはシム ref を使用するため、pyenvをフィッシュシェルで動作させるためには、〜/ .config/fish/config.fishファイルを編集して、 $ PATH変数。 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
ここに関連する行は
set pyenv ~/.pyenv/shims/
そして
set -gx PATH $pyenv $default_path $macports $androiddev $rbenv $pg_config
最初はpyenv shimパスの変数を作成し、2番目はそれをパス変数の前に追加します。保存して閉じるだけで、ターミナルセッションが再開され、設定は完了です。
私は同じ問題に遭遇し、way_pyenv init
_にいくつかの変更を加えることになりましたシェルですが、最終的には同じように動作します。 pyenv githubページの guide との唯一の本当の違いは、$(pyenv root)/bin
ディレクトリをパスに追加しなければならなかったことです。
これを行った理由は、eval "$(pyenv init -)"
および他のすべての_.bash_profile
_作業がローカルシェル環境で実行されるので、シェルの起動時間が長くなるのを避けるためです。ただ明確にします;私の謙虚な意見では、Pyenv自体は悪いシェルエクスペリエンスを作成しませんが、.profile withから初期化するのが好きな独自のバージョン管理システムとツールを持つすべての言語で作業する場合pyenv
など、シェルの初期化プロセスが遅くなる可能性があります。
ここでは、高い視点で自分を設定するために行った手順を示します:
pyenv init
_コマンドのドライランバージョンを実行して、それが何をしたかを確認できるようにします。PATH
およびシェル環境変数を_.bash_profile
_(またはディストリビューションが使用するファイル)に入れます。pyenv init
_を_.bashrc
_に出力し、_.bashrc
_から_.bash_profile
_を取得しますこれはそれを成し遂げる1つの方法ですが、これを「擬似コード」として使用する方が良いでしょう。 _.bash_profile
_を、ディストリビューションが好むファイルと交換する必要があります。
_$ 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
_
次のビットは、上記のステップ1の_pyenv init
_ドライランからコピーした新しいロジックでシェルを更新します。
_$ 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
_