155

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$ 

なぜこれが起こるのかわかりません。

ご参考までに。私のpythonはこのディレクトリにあります。

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

前もって感謝します。

4

22 に答える 22

162

これを試して:eval "$(pyenv init -)"

例:

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

詳細: https://github.com/pyenv/pyenv

于 2015-12-08T12:47:07.930 に答える
14

私は、Rosetta エミュレーション端末に Pyenv をインストールして、Monterey を実行している Apple M1 MacBook Pro で同じ問題に苦しんできました。

私の解決策は、 ~/.zshrc ファイルに以下を追加することでした:

eval "$(pyenv init -)"
eval "$(pyenv init --path)"

~/.zprofile には何も追加しませんでした。

期待どおりにバージョンが切り替わっていることがわかります。

于 2021-12-10T13:13:44.897 に答える
12

バックグラウンド

  • 今:20210926
  • マック:10.15.7
  • pyenv:2.0.7

解決

現在のコンソール用
eval "$(pyenv init --path)"
起動後の作業用

Mac の起動後に自動で有効にする場合は、起動スクリプトに追加します

ここで私はzshなので:

vi ~/.zshrc

追加

eval "$(pyenv init --path)"

終わり。

于 2021-09-26T06:48:29.777 に答える
1

あなたがMacOSユーザーだと仮定すると...

走る

pyenv init

このヒントを得るには:

# See the README for instructions on how to set up
# your shell environment for Pyenv.

したがって、https://github.com/pyenv/pyenv#readmeにアクセスして、このヒントを入手してください。

Zsh の場合:

MacOS、Pyenv が Homebrew でインストールされている場合:

echo 'eval "$(pyenv init --path)"' >> ~/.zprofile
 
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

ターミナル アプリがログイン シェルとしてシェルを実行していることを確認します。

macOS Monterey 12.0.1およびpyenv 2.2.0で動作します。 Pyenvはbrewでインストールされ、pythonは でインストールされpyenv installます。

于 2021-11-13T13:01:00.337 に答える
1

私は同じ問題に遭遇し、最終的にシェルのセットアップ方法にいくつかの変更を加えましたが、最終的には同じように機能します。 pyenv github ページのガイドpyenv initとの唯一の実際の違いは、パスにもディレクトリを追加する必要があったことです。$(pyenv root)/bin

これを行った理由は、実行中の長いシェル起動時間と、ローカル シェル環境に入るeval "$(pyenv init -)"他のすべての作業を回避するためでした。.bash_profileただ明確にします; 私の謙虚な意見では、Pyenv自体は悪いシェルエクスペリエンスを作成しませんが、独自のバージョン管理システムと.profileから初期化することを好むツールを持ついくつかの言語で作業する場合など pyenv、シェルの初期化プロセスが遅くなる可能性があります。

高い視点で自分自身をセットアップするために行った手順は次のとおりです。

  1. コマンドの予行演習バージョンを実行して、pyenv initそれによって何が行われるかを確認してください。
  2. およびシェルPATH環境変数を自分の.bash_profile (またはディストリビューションが使用する任意のファイル) に入れます。
  3. 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

次のビットではpyenv init、上記のステップ 1 の予行演習からコピーした新しいロジックでシェルを更新します。

$ 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
于 2019-03-21T22:28:09.270 に答える
0

過去に行ったことがある場合は、ホーム ディレクトリにpyenv local新しい.python_versionファイルが作成されます ~.

開発環境が適切に構成されていない場合、pyenv グローバル コマンドに影響を与える可能性があります。

このファイルを削除すると、pyenv global動作するはずです。

于 2021-03-19T10:38:42.790 に答える