Ubuntu ServerにPythonとpyenvをインストールして開発環境を構築した時のメモ

概要

Ubuntu ServerへPythonとpyenvをインストールして、開発環境を構築したので、その時のメモ。

Ubuntuへのpyenvのインストール

基本的には、pyenvのgithubに記載の手順に沿ってインストールします

(Github) pyenv/pyenvインストール方法

pyenvのインストール

最新のHEADを取得する場合は下記のコマンドを実行。
pyenvの特定のリリースをインストールする場合は、PYENV_GIT_TAG環境変数を設定します (例export PYENV_GIT_TAG=v2.2.5:)。

1
$ sudo curl https://pyenv.run | bash

pyenv.runは、リポジトリのpyenv-installerにリダイレクトされるので、上記の呼び出しは以下と同じ結果になるようです。(つまりどちらでもよい)

1
$ sudo curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

pyenvのPATHを設定する

下記コマンドを実行してPathを通します

まずは、 ~/.bashrc へ下記コマンドで設定追加。
個人的な好みですが公式のコマンドに加えてコメントを入れています。

1
2
3
4
5
echo '' >> ~/.bashrc
echo '# set PATH for pyenv' >> ~/.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

今回使った環境 (Ubuntu Server 22.04) は、/.bash_profile がなく、/.profileがあるので、下記コマンドを実行しました。

1
2
3
4
5
echo '' >> ~/.profile
echo '# set PATH for pyenv' >> ~/.profile
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.profile

シェルを再起動します。

1
$ exec $SHELL

pyenvのバージョンを表示できるようになりました。

1
2
$ pyenv --version
pyenv 2.3.13

pyenvのアップデートをしておきます。

1
$ pyenv update

pythonをバージョン指定してインストール

下記コマンドを実行してインストール可能なリストを取得します

1
2
3
4
5
6
7
8
9
10
11
12
13
$ pyenv install --list
Available versions:
2.1.3
2.2.3
2.3.7
(中略)
3.10.10
3.11.0
3.11-dev
3.11.1
3.11.2
3.12.0a5
3.12-dev

今回は、3.10.10と、3.11.2を使ってみます
下記コマンドを実行してそれぞれのバージョンをインストールします。

1
2
$ pyenv install 3.10.4
$ pyenv install 3.11.2

pythonの指定したバージョンをインストールできたか確認します。

1
2
3
4
$ pyenv versions
* system (set by /home/testuser/.pyenv/version)
3.10.4
3.11.2

pyenvでpythonをバージョン指定してインストールするときに失敗した場合の対処法

ここでpyenvでpythonのインストールに失敗し、下記のようなエラーが出ることがあります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
BUILD FAILED (Ubuntu 22.04 using python-build 20180424)

Inspect or clean up the working tree at /tmp/python-build.20230223130153.2311
Results logged to /tmp/python-build.20230223130153.2311.log

Last 10 log lines:
checking for pkg-config... no
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... "linux"
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/tmp/python-build.20230223130153.2311/Python-3.11.2':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

ビルド環境に必要なツール群をインストールすると解決する場合があります。

参考: https://github.com/pyenv/pyenv/wiki#suggested-build-environment

1
2
3
$ sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

pythonをバージョン指定して適用

pythonのバージョンを変更してみます

1
$ pyenv global 3.10.4

変更できたことを確認します

1
2
3
4
$ pyenv versions
system
* 3.10.4 (set by /home/testuser/.pyenv/version)
3.11.2
1
2
$ python --version
Python 3.10.4

3.11.2も試してみます

1
$ pyenv global 3.11.2
1
2
3
4
$ pyenv versions
system
3.10.4
* 3.11.2 (set by /home/testuser/.pyenv/version)
1
2
$ python --version
Python 3.11.2