0
0

More than 1 year has passed since last update.

pyenv備忘録

Last updated at Posted at 2021-06-24

pyenv備忘録

$ tree -L 1 $HOME/.pyenv
/home/ubuntu/.pyenv
├── Dockerfile
├── Makefile
├── README.md
├── bin
├── completions
├── libexec
├── man
├── plugins
├── pyenv.d
├── shims
├── src
├── terminal_output.png
├── test
├── version
└── versions

pyenv local hogeがそのディレクトリ下でしか動かないことを確認する

hoge@LAPTOP-hoge:~/abc$ pyenv versions
  system
  2.7.15
  3.6.9
* 3.8.10 (set by /home/hoge/.pyenv/version)

globalで3.8.10が使われる設定になっている。
今いるディレクトリ下で使うpythonを3.6.9にする

hoge@LAPTOP-hoge:~/abc$ pyenv local 3.6.9

hoge@LAPTOP-hoge:~/abc$ pyenv versions
  system
  2.7.15
* 3.6.9 (set by /home/hoge/abc/.python-version)
  3.8.10

3.6.9が使われる設定になっているが、一個上のディレクトリではどうだろうか?

hoge@LAPTOP-hoge:~/abc$ cd ../
hoge@LAPTOP-hoge:~$ pyenv versions
  system
  2.7.15
  3.6.9
* 3.8.10 (set by /home/hoge/.pyenv/version)

一個上のディレクトリではpyenv global 3.8.10なので3.8.10が使われるようになっている。

pyenv local バージョン情報
としたディレクトリには.python-versionが作成され、中にはlocalで指定した3.6.9という文字が書き込まれている。

hoge@LAPTOP-hoge:~/abc$ ls
.  ..  .python-version
hoge@LAPTOP-hoge:~/abc$ cat .python-version
3.6.9

調べてみると詳しめの解説があるサイトにたどり着いた。

https://outputable.com/post/about-pyenv/#pyenv-global
バージョン情報はpyenv localコマンドを実行したディレクトリに「.python-version」ファイルとして記述され、管理されています。
※globalや上位階層の「.python-version」より、より深い階層の「.python-version」が優先されるようです。
(より具体的に言うと、下層 -> 上層順に探索され、「$HOME/.pyenv/version」ファイルの情報もない場合、システムのPython, pipが呼び出されるようです)

shims以下のコマンド実行(local指定している場合)の挙動
→shims以下の同名コマンドが、.python-versionファイルに記載されたpythonを~/.pyenv/versions/から探し出して実行する

まとめ

.python-versionがなければ.pyenv/version
それもなければsystemにあるpythonを使用

ex.
local指定がある場合python,pipなどのコマンドが実行されると、shims以下の同名コマンドが実行され
.python-versionに記載のpythonバージョンのコマンドが.pyenv/versions/以下から実行される
local指定がない場合.pyenv/versionに記載のpythonバージョンがversions以下のファイルから実行されるはず。(globalバージョンの情報は
.pyenv/versionに記載される)それもなければsystemにあるpythonを使用。

0
0
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
0
0