LoginSignup
16
15

More than 5 years have passed since last update.

pyenv global xx したのに反映されない

Posted at

状況

pyenv global xxとしたのにpythonのバージョンが変わらない


$ pyenv global anaconda3-5.1.0 (set by /Users/user1/.python-version)
$ python -V
Python 3.4.1
$ pyenv versions
 system 
* 3.4.1(set by /Users/user1/.python-version)
 anaconda3-5.1.0 

原因・解決方法

以前にユーザのホームディレクトリ(/Users/user1)でpyenv local 3.4.1を行なっていたため。

pyenv local some_versionはそのディレクトリに.python-versionファイルを作成し、その中身をsome_versionに書き換える。
ホームディレクトリ上でpyenv local some_versionしてしまうとその下の階層全てでこの設定が有効になるためいくらpyenv global other_versionしてもlocalの方の設定が優先されてしまう。

globalとlocalでどちらの設定が優先されているかはpyenv versionsしたときに
(set by /Users/user1/.python-version)ならlocal設定が優先
(set by /Users/user1/.pyenv/version)ならglobal設定が優先
されている。

初心者のころ訳も分からずホームディレクトリでpyenv localすると、数ヶ月後にこのような形でトラブります。

補足

pyenvの動作として、
pyenv global some_versionしたときは/Users/user1/.pyenv/versionのファイルの内容をsome_versionに置き換え、
pyenv local some_versionしたときはカレントディレクトリ上に.python-versionのファイルの内容をsome_versionに置き換える。
単にファイルを書き換えているだけだと思われる。
(ファイルをviで編集しても設定は反映された)

pythonを呼び出すときに
/Users/user1/.pyenv/versionを読み込み、
カレントディレクトリより上のディレクトリから.python-versionがあるか確認し、ファイルがあればそれを読み込んでいくようです。

16
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15