“python” コマンドで Python3 を実行する方法

Study

概要

Python を使うなら仮想環境も使いましょう、という話。

経緯

AWS CDK について勉強しようと思い、環境構築に手を付けた。

Python での CDK 環境構築の要件として venv があったので、venv の基本的な使い方を勉強する必要が出てきた。Python の仮想環境としては、Anaconda の環境をちょっと触ったことくらいしかなく、venv は存在を知っていながら使ったことがなかった

今回、AWS CDK を使用するために、必要に駆られて venv を学習することになったが、venv を触っていたところ、とある疑問が解消された

それは、「Python3 を実行する際に使用されるコマンドとして、”python3” と “python” の2種類があるのはなぜか」という疑問だ。

前提

Python を使用する上で必ず理解しておかなければならないのは、Python3 とは記法が異なる Python2 が存在することだ。
Python2 と Python3 が混在していた頃、自分の理解は次の通りだった。

  • python:Python2 系を実行する
  • python3:Python3 系を実行する

実際、Python2 のサポートが切れるまでは、Ubuntu で “python” を実行すると Python2.7 とかのインタプリタが起動していた記憶がある。Python がデフォルトでインストールされている Ubuntu (22.04 LTS) にて、”python“、”python3” を実行すると次のようになる。

$ python
Command 'python' not found, did you mean:
  command 'python3' from deb python3
  command 'python' from deb python-is-python3

$ python3
Python 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

デフォルトでは、”python3” というコマンドで Python3 を実行できるようになっている

※ “python” では、必ず Python2 が実行されるというわけではないらしい。

Python2 の場合は python2 コマンド、Python3 の場合は python3 コマンドを使います。

Linux のディストリビューションによっては、python コマンドが python2 または python3 のシンボリックリンクになっている場合があります。

Python スクリプト実行方法:https://aznote.jakou.com/python/run.html

2種類のコマンド

ここからが問題。

Python3 の実行方法を記載しているサイトを検索すると、”python3” を使っているサイトもあれば、”python” を使っているサイトもある

python3” を使っているページの例

Python スクリプト実行方法

python” を使っているページの例

Pythonを対話モードで利用する
Python では入力したコードをすぐに実行することができる対話モードで利用する機能が用意されています。ここでは Python を対話モードで起動し利用する方法について解説します。

解決方法?

先ほど紹介したように、デフォルトでは、”python3” コマンドを使用して Python3 を実行する
では、”python” コマンドを使っている人はどのようにしているのか。

検索してみると、いくつかの方法が見つかる。

単純に、エイリアス alias python="python3" を設定しているもの。

pythonコマンドでpython3を実行したい - Qiita
###現状vmにubuntu serverを入れたら、python2とpython3がインストールされてた。pythonコマンドでpython3を実行したい!ついでにpipも。pythonではp…

alternatives コマンドを使用しているもの。これはやったことがない。

ubuntu:コマンド’python’が見つかりません。を解決
Pythonの学習をしようと、いざubuntuを使ってpythonファイルを実行してみると 「コマンド: 'python' が見つかりません。もしかして:  command 'python3' fr

python-is-python3 パッケージを使用するもの。

python-is-python3が出た時の対処方法。pythonコマンドでpython3を実行する方法 | Libproc

エイリアスを張る方法や python-is-python3 を使用する方法は知っていたが、広く使われている方法ではないのでは、と感じた。自分でエイリアスを設定していたとして、説明なしにそのままサイトに載せないような気がするし、python-is-python3 が一般的なのならもっと知名度がある気がする

そんな疑問を抱きつつ、エイリアスを使用したりして、 “python” コマンドで Python3 を使っていた。

おそらく最適解

疑問解消

抱えていた疑問を忘れかけていたころに、仮想環境 venv に触れることになった。

結論から言うと、python” で Python3 を実行する方法の最適解は、Python の仮想環境を使用することだと思う。

仮想環境を使用することで、アプリケーション毎に個別の Python 環境を用意することができる。仮想環境を使用しない場合、1つの Python 環境しか管理できず、パッケージの競合等が起こったときに面倒くさいことになる

従って、Python を勉強するなら仮想環境の導入をおすすめする

venv により作成した仮想環境を有効化し、”python” コマンドを実行すると次のようになる。

(.venv) $ python
Python 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

venv の仮想環境では、”python” コマンドで Python3 が実行できる

個人的な予想だが、python” で Python3 を実行している人は、何かしらの仮想環境を導入していると思う。先程、”python” コマンドを使っている例として挙げたページも、Anaconda という仮想環境を使用していた。

そういえば、自分が Anaconda を使っていたときも、”python” で Python3 を実行していた。

使用方法

今回は venv を使用する必要があったので、venv について解説する。

Ubuntu にて venv をインストールする方法は次の通り。

$ sudo apt install -y python3-venv

ディレクトリを作成し、ディレクトリ内で名前を指定して仮想環境を作成する

$ mkdir pj
$ cd pj
$ python3 -m venv .venv

仮想環境の情報は、指定したディレクトリ(今回は .venv/ )の下に全て保存されるため、Python コード等と共に pj/ の下で管理する、といったことができる。もちろん、別ディレクトリに作成すれば、仮想環境だけを分けて管理することもできる。

仮想環境の有効化・無効化は次の通り。

$ source ~/.venv/bin/activate    # 有効化
(.venv) $                        # プロンプトに仮想環境名が表示される。
(.venv) $ deactivate             # 無効化
$                                # プロンプトが元に戻る。

以上で、仮想環境を使用することができる。

まとめ

python” コマンドを使いたいなら、仮想環境を導入しましょう

python3” コマンドを使うので良くても、仮想環境を導入しましょう

Python を勉強するなら、仮想環境を導入しましょう

感想

AWS CDK を使うために環境構築をしようとしてたら、venv を触る羽目になって、思わぬ形で疑問が解消された。

Anaconda で環境を構築したときに、”python” コマンドで Python3 が使用できることは認識していた。しかし、当時仮想環境を使いこなせていたわけではなかった(最初の方は1つの仮想環境しか使っていなかった)し、仮想環境がどれくらい一般的なものかも分かっていなかった

今回の記事は、そんな当時の自分に読んでもらいたい。

仮想環境内には独立した1つの Python 実行環境がある、と考えると、仮想環境内での Python 実行時には、 Python2 系なのか Python3 系なのかを明示する必要がない。そのため、仮想環境では、バージョン指定のない “python” コマンドでも問題がないのだろう。

参考

Python での AWS CDK の使用 - AWS Cloud Development Kit (AWS CDK) v2
PythonAWS CDK はが完全にサポートされているクライアント言語であり、安定していると考えられています。PythonAWS CDK での操作には、標準の Python 実装 (CPython)、を使用した仮想環境、Python パッ...
https://hirooka.pro/python-venv-ubuntu-20-04/
venv --- 仮想環境の作成
ソースコード: Lib/venv/ venv モジュールは、軽量な仮想環境の作成を行います。それぞれの仮想環境は、 site ディレクトリに独立した Python パッケージの集合を持っています。仮想環境は、ベース Python とも呼ばれ...
タイトルとURLをコピーしました