4.5 KiB
4.5 KiB
20240315154213 pyenv
#python #pyenv pyenv pythonのバージョンセレクタ。 20231129211719 poetryとセットで使うと便利かもしれない。
インストール方法(Raspberry Pi OS)
公式サイトの方法に準じる。 raspberry pi OSのaptパッケージには無い。
linux/mac OS
$ curl https://pyenv.run | bash
~/.bashrc
に下記を追加
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
設定の反映
$ . ~/.bashrc
windows
pyenvそのものはwindowsに対応していない。代替で
pyenv-win がある。 ちょっと使ってみた感じ、 pyenv install [version]
の所が、pyenvでは 3.12 のようなマイナーバージョンを指定すると最新をインストールしてくれるが、pyenv-winだとパッチバージョンまで指定しないとインストールできなかった。他にも違いがあるかもしれない。
使い方
pyenv自体のアップデートしたい
$ pyenv update
現在インストールされているpythonのリストを表示したい
$ pyenv versions
特定のバージョンのpythonをユーザーが全体で使いたい
$ pyenv global [version]
どのバージョンを指定したかは ~/.pyenv/version
というファイルに書かれる。
特定のバージョンのpythonを特定のディレクトリ以下で使いたい
$ pyenv local [version]
どのバージョンを指定したかは ディレクトリ内の.python-version
というファイルに書かれる。
そのディレクトリ以下では、別の階層のディレクトリに入っても .python-versionが再度出てこない限りは同じバージョンが使われるので、プロジェクトのroot的な所で実行すればよい。
インストール可能なpythonのリストを表示したい
$ pyenv install -list
Available versions:
.
.
.
anacondaとかmicropythonも選択可能
特定のpythonをインストールしたい
3.12.2がインストールしたいとすると
$ pyenv install 3.12.2
Downloading Python-3.12.2.tar.xz...
-> https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz
Installing Python-3.12.2...
ソースからビルドしてるっぽい。自分の環境では以下のwarningが出た
ModuleNotFoundError: No module named '_bz2'
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/kazbo/.pyenv/versions/3.12.2/lib/python3.12/curses/__init__.py", line 13, in <module>
from _curses import *
ModuleNotFoundError: No module named '_curses'
WARNING: The Python curses extension was not compiled. Missing the ncurses lib?
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/kazbo/.pyenv/versions/3.12.2/lib/python3.12/ctypes/__init__.py", line 8, in <module>
from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
WARNING: The Python ctypes extension was not compiled. Missing the libffi lib?
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'readline'
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/kazbo/.pyenv/versions/3.12.2/lib/python3.12/sqlite3/__init__.py", line 57, in <module>
from sqlite3.dbapi2 import *
File "/home/kazbo/.pyenv/versions/3.12.2/lib/python3.12/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/kazbo/.pyenv/versions/3.12.2/lib/python3.12/lzma.py", line 27, in <module>
from _lzma import *
ModuleNotFoundError: No module named '_lzma'
WARNING: The Python lzma extension was not compiled. Missing the lzma lib?
それぞれの対応するライブラリをインストール
$ sudo apt install liblzma-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev libdb-dev
libreadline-dev libgdbm-dev
libncursesw5-dev libssl-dev zlib1g-dev uuid-dev tk-dev