こんにちは。パパスです。
今回はUbuntuでPythonをインストールする手順をご紹介します。
Macの方は下記記事をご覧ください。
環境
Ubuntu 20.04.4 LTS
Gitのインストール
インストール状況確認
下記コマンドを実行し、Gitがインストールされているか確認します。
$ git --version
実行すると下記いずれかのように表示されます。
# インストールされている場合
$ git --version
git version 2.25.1
# インストールされていない場合
$ git --version
コマンド 'git' が見つかりません。次の方法でインストールできます:
sudo apt install git
インストール
下記を実行し、Gitをインストールします。
$ sudo apt install git
インストールを完了したら、最低限の初期設定を行います。
$ git config --global user.name [your_name]
$ git config --global user.email [your@email]
[your_name], [your@email]の箇所はご自身のユーザー名とメールアドレスになります。
※いつでも変更できるので、適当で大丈夫です
pyenvのインストール
インストール状況確認
下記コマンドでpyenvがインストールされているか確認します。
$ pyenv -v
実行すると下記いずれかのように表示されます。
# インストールされている場合
$ pyenv -v
pyenv 2.2.5-1-ga157725d
# インストールされていない場合
$ pyenv -v
コマンド 'pyenv' が見つかりません。もしかして:
command 'pyvenv' from deb python3-venv (3.8.2-0ubuntu2)
command 'p7env' from deb libnss3-tools (2:3.49.1-1ubuntu1.6)
次を試してみてください: sudo apt install <deb name>
インストール済みの方はPythonのインストールまでお進みください。
インストール
下記を実行し、pyenvをインストールします。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
pyenvを使えるようにするために初期設定をします。
$ sed -Ei -e '/^([^#]|$)/ {a \
export PYENV_ROOT="$HOME/.pyenv"
a \
export PATH="$PYENV_ROOT/bin:$PATH"
a \
' -e ':a' -e '$!{n;ba};}' ~/.profile
$ echo 'eval "$(pyenv init --path)"' >>~/.profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.profile
$ source ~/.bashrc
インストールが終わったら下記コマンドで確認します。
$ pyenv -v
インストールしたバージョンが表示されればOKです。
Pythonのインストール
ビルド環境構築
Pythonをインストールする際、ビルドが行われます。
ビルドに必要なライブラリがいくつかあるので、まずはそちらを導入しましょう。
Ubuntu以外のLinuxをお使いの方は下記URLよりご確認ください。
https://github.com/pyenv/pyenv/wiki
$ sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
上記の導入を終えたら、早速Pythonをインストールしていきます。
インストールできるバージョンを確認
まずはインストールできるバージョンを確認します。
$ pyenv install --list
以下のように沢山表示されます。
$ pyenv install --list
Available versions:
2.1.3
2.2.3
--- 省略 ---
3.9.10
3.9.11
3.10.0
3.10-dev
3.10.1
3.10.2
3.10.3
--- 省略 ---
インストール
上記結果からインストールするバージョンを選択します。
今回は3.10.3をインストールしてみたいと思います。
$ pyenv install 3.10.3
インストールが終わったら下記コマンドで確認します。
$ pyenv versions
3.10.3が追加されていますね。
$ pyenv versions
* system (set by /Users/papas/.pyenv/version)
3.10.3
インストールに失敗した場合
以下のようにインストールに失敗した場合、前項のビルド環境構築を実施した上で再度インストールしてみてください。
(僕はこれに悩まされました…)
$ pyenv install 3.10.3
Downloading Python-3.10.3.tar.xz...
-> https://www.python.org/ftp/python/3.10.3/Python-3.10.3.tar.xz
Installing Python-3.10.3...
BUILD FAILED (Ubuntu 20.04 using python-build 2.2.5-1-ga157725d)
Inspect or clean up the working tree at /tmp/python-build.20220317181418.13977
Results logged to /tmp/python-build.20220317181418.13977.log
Last 10 log lines:
File "/tmp/python-build.20220317181418.13977/Python-3.10.3/Lib/ensurepip/__init__.py", line 277, in _main
return _bootstrap(
File "/tmp/python-build.20220317181418.13977/Python-3.10.3/Lib/ensurepip/__init__.py", line 193, in _bootstrap
return _run_pip([*args, *_PACKAGE_NAMES], additional_paths)
File "/tmp/python-build.20220317181418.13977/Python-3.10.3/Lib/ensurepip/__init__.py", line 93, in _run_pip
return subprocess.run([sys.executable, '-W', 'ignore::DeprecationWarning',
File "/tmp/python-build.20220317181418.13977/Python-3.10.3/Lib/subprocess.py", line 524, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/tmp/python-build.20220317181418.13977/Python-3.10.3/python', '-W', 'ignore::DeprecationWarning', '-c', '\nimport runpy\nimport sys\nsys.path = [\'/tmp/tmpbe5ietop/setuptools-58.1.0-py3-none-any.whl\', \'/tmp/tmpbe5ietop/pip-22.0.4-py3-none-any.whl\'] + sys.path\nsys.argv[1:] = [\'install\', \'--no-cache-dir\', \'--no-index\', \'--find-links\', \'/tmp/tmpbe5ietop\', \'--root\', \'/\', \'--upgrade\', \'setuptools\', \'pip\']\nrunpy.run_module("pip", run_name="__main__", alter_sys=True)\n']' returned non-zero exit status 1.
make: *** [Makefile:1280: install] エラー 1
使用するPythonのバージョンを設定する
先程インストールしたバージョン3.10.3を使うように設定します。
$ pyenv global 3.10.3
もう一度バージョンを確認すると、*が3.10.3の方に移動して切り替わりました。
$ pyenv versions
system
* 3.10.3 (set by /Users/papas/.pyenv/version)
おわりに
慣れないUbuntuでの環境構築でしたが、何とか無事にできました。
僕と同じように環境構築に躓いている方の参考になれば幸いです。