UbuntuにPython3をvenvを使ってインストールする方法です。 Python3のインストールだけだとすぐに終わっちゃうので仮想環境も構築します。
venvは仮想環境をつくるための標準ツールです。 pipでインストールするパッケージディレクトリごとに実行環境を変えたり、バージョン管理を楽にしてくれます。
今回の用途はゼロから作るDeepLeaningの実行環境を整えるためですので、同時に必要なライブラリもインストールします。
環境
- Ubuntu 18.04.4 LTS
インストールするもの
- Python 3.8.0
- NumPy
- Matplotlib
Pythonは3系であれば問題ありません。 最新の3.8.0をインストールします。
ライブラリのSciPyとCuPyはオプションとなっていたので、必要になったらいつかインストールします。
venvはいらないから簡単にインストールしたい
Ubuntu 18.04(または16.10)では以下のコマンドだけでPython3.8をインストール出来ます。
$ sudo apt-get update
$ sudo apt-get install python3.8
# こうすると3.6.9がインストールできる
$ sudo apt-get remove python3
インストールできたらpython3
コマンドで確認できます。
$ python3.8 --version
Python 3.8.0
削除する場合は$ sudo apt-get remove python3.8`です。
Ubuntuに限らずLinuxではPython2が動いており、python
コマンドはPython2に割り当てられています。
作業していると結構コマンドを打ち間違えるので、venv使ってディレクトリごとに環境をPython3に切り替えたいと思いました。
- Installing Python 3 on Linux
- Ubuntu 16も同じようにインストールできるかと
venvで仮想環境を構築する
venvは仮想環境を作るためのツールで、Python3.3から標準ツールとなりました。
私は以前サードパーティのvirtualenv
で仮想環境を作ったことがあります。
その時はPython3.6でしたがvenvの存在は知らなかった。。。ので構築したら比べてみます。
Zappaを使ってPythonのコードをAWS Lambdaにデプロイする
venvのインストールと仮想環境の構築はHow to Create Python Virtual Environments on Ubuntu 18.04を参考にします。
Python3をインストールする
venvはPython3.3以降が必要です。 最新のpython3.8をインストールします。
ちなみに以下の手順のpython3.8
をすべてpython3
にするとpython3.6の環境が出来上がります。
$ sudo apt-get update
$ sudo apt-get install python3.8
$ python3.8 --version
Python 3.8.0
これで十分な気もしてきたけど進めます。
続いてvenvのモジュールが入ったpython3-venv
をインストールします。
$ sudo apt install python3.8-venv
仮想環境を作る
my-projectというディレクトリの配下に仮想環境を作ります。
# まずは仮想環境の名前を決める。
$ python3.8 -m venv my-project-env
# ディレクトリを移動して
$ cd path/to/my-project
# そこを仮想環境とする
$ source my-project-env/bin/activate
(my-project-env) suzu6:~/path/to/my-project$
すると$のまえに環境名がつくようになります。
(source
コマンドなんで環境変数を切り替えてるんでしょうね)
(my-project-env) suzu6:~/path/to/my-project$ python --version
Python 3.8.0
(my-project-env) suzu6:~/path/to/my-project$ pip -V
pip 9.0.1 from /home/suzumura/git/nuxt-blog/my-project-env/lib/python3.8/site-packages (python 3.8)
python
とpip
のバージョンも切り替わりました!
pipでNumPyとMatplotlibをインストールしてみます。
# NumPyとMatplotlibをインストール
(my-project-env) suzu6:~/path/to/my-project$ pip install numpy matplotlib
# バージョン確認
(my-project-env) suzu6:~/path/to/my-project$ pip freeze
cycler==0.10.0
kiwisolver==1.1.0
matplotlib==3.2.0
numpy==1.18.2
pkg-resources==0.0.0
pyparsing==2.4.6
python-dateutil==2.8.1
six==1.14.0
その他のコマンド
# 仮想環境を閉じる
(my-project-env) suzu6:~/path/to/my-project$ deactivate
# 仮想環境を削除する
$ rm -r my-project-env
venvのヘルプ
$ python3.8 -m venv -h
usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip] [--prompt PROMPT] ENV_DIR [ENV_DIR ...]
Creates virtual Python environments in one or more target directories.
positional arguments:
ENV_DIR A directory to create the environment in.
optional arguments:
-h, --help show this help message and exit
--system-site-packages
Give the virtual environment access to the system site-packages dir.
--symlinks Try to use symlinks rather than copies, when symlinks are not the default for the platform.
--copies Try to use copies rather than symlinks, even when symlinks are the default for the platform.
--clear Delete the contents of the environment directory if it already exists, before environment creation.
--upgrade Upgrade the environment directory to use this version of Python, assuming Python has been upgraded in-place.
--without-pip Skips installing or upgrading pip in the virtual environment (pip is bootstrapped by default)
--prompt PROMPT Provides an alternative prompt prefix for this environment.
Once an environment has been created, you may wish to activate it, e.g. by sourcing an activate script in its bin directory.
python自体のバージョンは--upgrade
でアップグレードできるみたい。
ダウングレードはないようなんで、特定のバージョンが必要な場合はインストール手順のpython3.8
をすべてpython3.x
にするとその環境が出来上がります。(3.3以上)
venvとvirtualenv
性能面は調べていないため割愛するが、扱いやすさは正直変わらないと思う。 ただ、日本語で参考になる記事がvirtualenvのほうが圧倒的に多いためとっつきやすい。
virtualenvはおまけだけど、AWS Lambdaで遊んだ記事もあるのでよければどうぞ。 Zappaを使ってPythonのコードをAWS Lambdaにデプロイする
参考
- Python モジュールのインストール
- How to Create Python Virtual Environments on Ubuntu 18.04
- 今回参考にした方法
- How to manage multiple Python versions and virtual environments
- Pythonの仮想環境ツールを比較した記事。venv / pyvenv / virtualenvが載ってます。