pythonの学習をしていたのですが、pyenvが思ったように動かなくなるアンインストールしようと思い、ターミナルでwhich pyenvとやったらよくわからないコードが出てきました。
ネットで調べてみてもよくわからないので、わかる方がいたら教えていただきたいです。
% which pyenv pyenv () { local command command="${1:-}" if [ "$#" -gt 0 ] then shift fi case "$command" in (rehash | shell) eval "$(pyenv "sh-$command" "$@")" ;; (*) command pyenv "$command" "$@" ;; esac }
追記:
os : macOS
pyenvのインストール方法 homebrew
pythonのインストール方法:不明
シェル: zsh
% which pyenv /usr/local/bin/pyenv % pyenv root /Users/soumar/.pyenv %pyenv versions system * 3.10.0 (set by /Users/name/.python-version) 3.10.1 %which python /usr/bin/python
ここの* 3.10.0 (set by /Users/name/.python-version) のとこで.python-versionがひっかります。
これが表示されます。
まったく訳がわからず進めることができません。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/03 15:25
2022/02/03 15:42

回答3件
0
一度eval "$(pyenv init -)"
が実行されると(pyenvをインストールした時にこれが実行されるように設定したはずです)、pyenvという名前のシェル関数が定義されるのでwhich pyenv
が関数の定義を表示するようになります。
いったん
shell
1disable -f pyenv
を実行してシェル関数を無効化してからwhich pyenv
してください。
それでpyenvコマンドがどこにあるかは分かります。分かりますが、どうやって消すかはpyenvどうやってインストールしたのかに依ります。
pyenvでインストールしたpythonがどこにあるかは、pyenvの環境設定をした時にどこに置くと設定したのか、もしくは特に指定しなかったのか、に依ります。
pyenvの環境設定をした時にどういう設定をしたのかは、シェルが何か、pyenvをどうインストールしたのか、pyenvのバージョンがいくつなのかに依ります。
要するに、インストールした方法と、環境設定をした方法に依るので(インストールした方法と環境設定をした方法が別なことに注意)、そこの情報を隠されるなら、もしくは覚えていないなら、具体的な手順は指定できません。ありとあらゆるパターンを想定した手順を書くのも面倒ですし、面倒さに見合う価値があるとも思えません。
使用しているOSとシェル、pyenvをインストールした方法と環境設定した方法を(全部じゃなくてもいいので)質問を編集して書いてもらえるといいかと思います。
もしくは、pyenvのバージョン(pyenv -V
の結果)と、which pyenv
でわかるpyenvの場所と、pyenvが有効な状態でのwhich python
の結果が分かればおおよその見当はつくと思います。(ただしpyenvがまともにインストールされていたならという前提で)
追記
pyenv root
で、pyenvがどこをルートにしているか分かるんですね。(今気づきました)
そこを全部消して、シェルの設定からpyenv関連の記載を削除すれば十分ですね。
追記
https://github.com/pyenv/pyenv#user-content-choosing-the-python-version
を見てください。pyenvを使ったバージョン決定の優先度は
- PYENV_VERSION 環境変数
- カレントディレクトリの .python-version
- カレントディレクトリからディレクトリを上に遡っていって最初に見つかった .python-version
- $(pyenv root)/version
の順です。
あなたが過去に /Users/name で pyenv local 3.10.0
を1回でも実行したなら、そこに .python-version ができて3.10.0が書き込まれています。それだとホームディレクトリの配下全体で、3.10,0が指定されているように動きます。(個別にpyenv localを指定したディレクトリではそれが動きます)
(set by /Users/name/.python-version)
と表示されているならそういう状態なのでしょう。
cd /Users/name pyenv local --unset
するといいかと。
追記
pyenv global xxx
すると、上で書いた、pyenvを使ったバージョン決定の優先度の4番、$(pyenv root)/version に xxx を書き込みます。
pyenv local xxx
すると、その時のカレントディレクトリに .python-version を作り xxx を書き込みます。
pyenv shell xxx
すると、PYENV_VERSION 環境変数に xxx を書き込みます。
(pyenv local --unset
とpyenv shell --unset
は削除になります)
で、優先度が PYENV_VERSION 環境変数 > カレントディレクトリの .python-version > 上位ディレクリ > $(pyenv root)/version ですから、つまり、pyenv global で設定した値よりも pyenv local で設定した値が優先され、pyenv local で設定した値よりも pyenv shell で設定した値が優先されるという意味です。
逆に見ると、シェルの中で pyenv shell を実行してない時は pyenv local で指定された値を使おうとします。pyenv local が実行されたディレクトリでなければ pyenv global で指定された値を使います。
投稿2022/02/02 15:56
編集2022/02/03 15:24総合スコア11299
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
pyenvがシェルスクリプトの関数で実装されているからです。
アンインストールの方法は、pythonをアンインストールする5つの方法
のpyenvごとPythonをアンインストールする(Mac/Linux/Windows)
を見てください。
投稿2022/02/01 17:19
総合スコア24672
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。