26
10

More than 1 year has passed since last update.

【Linux】Docker上のUbuntuに任意バージョンのPythonをインストールする【Ubuntu 20.04】

Last updated at Posted at 2022-12-19

はじめに

この記事は、Docker上で動かしているUbuntuに好きなバージョンのPythonをインストールする方法を備忘録的にまとめたものです。

Ubuntuに複数バージョン、任意のバージョンのPythonをインストールする方法としてsoftware-properties-commonを使う方法がありますが、社有資産ではプロキシなどの問題でリポジトリにアクセスできないなどの問題がありました。
そこで、Git clone経由でpyenvを使った方法であればうまくインストールできたのでこれを紹介します。

こんな方に参考になればと思います。

  • DockerでPythonを使いたいが、特定のバージョンを使いたい
  • software-properties-commonがうまく機能しない
  • 社有資産でプロキシ、SSLの問題がよく発生している

ポイント
社有デバイスで作業する場合、あらかじめ企業に指定されているプロキシサーバを通してください。

こちらの記事を参考にさせていただきました。大変わかりやすく解説されています。

ubuntu 20.04 / 18.04 に pyenv をインストールする話/@neruoneru

動作確認環境

項目
OS Ubuntu 20.04
Shell Bash

インストール方法

コンテナに入る

docker attach xxxxxxxxxxxx

パッケージ更新

apt update
apt upgrade

pyenv実行用パッケージをインストール

apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
    curl llvm libncursesw5-dev tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \
    libopencv-dev git

pyenvをclone

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

カレントディレクトリを移動

cd ~/.pyenv/plugins/python-build

私の環境ではなぜか~/.pyenv/plugins/python-buildに一度に移動できず、cd ~/cd .pyenv/とディレクトリごとに指定すれば移動できました。

pyenvインストール実行

./install.sh

ポイント
インストールには時間がかかるので少し待ちましょう。

これでpyenvが動くようになりました。それでは好きなバージョンのpythonをインストールします。

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

python-build -v 3.8.6 ~/local/python-3.8.6

これでPython 3.8.6をインストールできましたが、環境変数に通してすぐに呼べるようにします。

環境変数にインストールしたPythonのディレクトリを追加

echo 'export PATH="$HOME/local/python-3.8.6/bin:$PATH"' >> ~/.bashrc

エイリアスを追加

今の時点ではこのPythonを起動するにはpython3と打つ必要があります。単純なpythonでも起動できるようにエイリアスを設定しておきます。

echo 'alias python="$HOME/local/python-3.8.6/bin/python3"' >> ~/.bashrc

起動確認

念のためコンテナを停止し再度起動させ、pythonを呼び出してみます。

python -V
# Python 3.8.6

おわりに

こちらの方法でPythonをインストールしたところ、pipなどパッケージ管理もうまくインストールでき快適な開発環境を構築できました。同じ悩みがある方の参考になれば幸いです。

参考

こちらの記事を参考に記事を作成しました。ありがとうございます。

pyenvのリポジトリ

26
10
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
26
10