Linux環境(WSLを含む)でPythonを使用する際、一般的にpython3コマンドでPython3を起動する必要があります。Python2の存在感が薄れている現在であれば、pythonだけで実行できるほうが助かります。そこで、pythonでpython3で動作させるための方法を紹介します。python3とpython2などを明確にわけたい人は使わないかも。
1. python-is-python3パッケージを使用する方法(最も簡単)
Debian/Ubuntu系のディストリビューションでは、python-is-python3パッケージをインストールすることで、pythonコマンドが自動的にpython3を参照するようになります。
$ sudo apt update $ sudo apt install python-is-python3
このパッケージをインストールした後は、単にpythonと入力するだけでPython3が起動します。
※ただし、このパッケージはpipコマンドには影響しないため、pipをpip3として使用するには以下のようにシンボリックリンクを作成する必要があります。
# `pip3`も`pip`として実行する場合のシンボリックリンク作成 $ sudo ln -s /usr/bin/pip3 /usr/bin/pip
2. pyenvを使用する方法(複数のバージョンを管理する場合に最適)
複数のPythonバージョンを管理したい場合は、pyenvを使用するのが良いでしょう。
pyenvを使用すると、プロジェクトごとに異なるPythonバージョンを簡単に切り替えられるため、バージョン依存の問題を回避できる点でもおすすめです。
pyenvのインストール:
# 必要な依存関係をインストール $ sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ xz-utils tk-dev libffi-dev liblzma-dev python-openssl git # pyenvをインストール $ curl https://pyenv.run | bash
シェル設定ファイル(.bashrcや.zshrcなど)に追加する
export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)"
Pythonのインストールと使用
# 利用可能なバージョンを確認 $ pyenv install --list # 特定のバージョンをインストール $ pyenv install 3.10.4 # グローバルバージョンを設定 $ pyenv global 3.10.4 # ローカル(カレントディレクトリ固有)バージョンを設定 $ pyenv local 3.10.4
pyenvを使用すると、pythonコマンドもpipコマンドも、現在選択されているPythonバージョンのものが使われます。
【参考】
3. シバン(shebang)と実行権限を使用する方法(スクリプト実行に便利)
実行するときにpython3をつけて実行などしないという硬派😎な方向けにはシバンと実行権限を使用でよいかもしれません。
1. Pythonのスクリプトの先頭に以下の行を追加
#!/usr/bin/env python3
2. スクリプトに実行権限を付与
$ chmod +x プログラム.py
3. 以下のように実行
$ ./プログラム.py
この方法では、コマンドラインから直接スクリプトを実行でき、明示的にpythonやpython3コマンドを入力する必要がありません。ただ、venvなどを使用する際はpython3 -m venv venvとする必要があるので限定的かもしれません。
結論
- 最も簡単な方法 …
python-is-python3パッケージをインストールする(pipなどの扱いには注意) - 複数のバージョンを管理する必要がある場合 …
pyenvを使用する(多くのパッケージを入れる必要があるのでちょっと面倒) - コマンドライン上で
python3を入力したくない場合 … シバン(shebang)と実行権限を使用する(実行時以外ではかわらないので効果が低いかも)
個人的にはpyenvがよいと考えています。現在はNode.js環境も同時に管理できるanyenvで行うことが多いです。
【参考】