概要
Pythonの特徴を以下に示す。
- シンプルで読みやすい文法
- Pythonはコードの可読性を重視している。
- そのため、他の言語に比べてシンプルな文法を持ち、インデントを使用してブロックを示す。
- これにより、コードが視覚的に理解しやすい。
- 動的型付け
- 変数の型を明示的に宣言する必要がなく、実行時に型が決定される。
- これにより、開発速度が向上する。
- 豊富な標準ライブラリ
- Pythonには多くの標準ライブラリが含まれており、ファイル操作、ネットワーク通信、データ解析、Web開発等、様々な機能を簡単に実装できる。
- マルチパラダイム
- Pythonはオブジェクト指向プログラミング、手続き型プログラミング、関数型プログラミングをサポートしている。
- これにより、様々なスタイルでコーディングすることが可能である。
- クロスプラットフォーム
- Pythonは、Windows、MacOS、Linux等の様々なプラットフォームで動作する。
- これにより、開発したコードを異なる環境で再利用できる。
Pythonの用途を以下に示す。
- Web開発
- DjangoやFlask等のフレームワークを使用して、Webアプリケーションを開発することができる。
- これらのフレームワークは、迅速な開発とスケーラブルなアプリケーション構築をサポートする。
- データサイエンスと機械学習
- Pandas、NumPy、Matplotlib、Scikit-learn、TensorFlow、PyTorch等、多くのライブラリがデータ分析や機械学習のために用意されている。
- これにより、データの前処理、可視化、モデル構築が効率的に行うことができる。
- 自動化とスクリプティング
- Pythonは、システム管理やタスクの自動化に広く使用されている。
- シンプルなスクリプトで複雑な作業を自動化することが可能である。
- 科学技術計算
- SciPyやSymPy等のライブラリを使用して、科学技術計算やシミュレーションを行うことができる。
- これにより、研究や開発において複雑な計算を簡単に処理できる。
- ゲーム開発
- Pygameなどのライブラリを使用して、シンプルなゲームを開発することができる。
- 教育目的やプロトタイプ作成にも適している。
- GUIアプリケーション
- TkinterやPyQt等のライブラリを使用して、デスクトップGUIアプリケーションを構築することができる。
Pythonに関するドキュメントを以下に示す。
- Python 3の公式ドキュメント
- その他のドキュメント
Pythonのインストール
RHEL / SUSE
Pythonのビルドに必要なライブラリをインストールする。
# RHEL sudo dnf install zlib-devel libffi-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libuuid-devel xz-devel expat-devel # SUSE sudo zypper install zlib-devel libffi-devel libbz2-devel libopenssl-devel ncurses-devel sqlite3-devel readline-devel tk-devel gdbm-devel libuuid-devel xz-devel libnsl-devel
まず、--enable-shared
オプションを付加する場合は、必ず、libディレクトリまたはlib64ディレクトリも作成する必要がある。
# Python 3.12以降をインストールする場合 mkdir -p /<Pythonのインストールディレクトリ>/lib # Python 3.11以前をインストールする場合 mkdir -p /<Pythonのインストールディレクトリ>/lib64
Pythonの公式Webサイトにアクセスして、ソースコードをダウンロードする。
最新のPythonを導入する場合、"Latest Python 3 Release - Python <バージョン>"を選択する。
ダウンロードしたファイルを解凍する。
tar xf Python-<バージョン>.tar.xz cd Python-<バージョン>
Pythonをビルドおよびインストールする。
Pythonを共有ライブラリ付きでインストールする場合は、--enable-shared
オプションを付加する。
また、rpath
オプションを付加する理由としては、ダイナミックリンクを行う側に、リンクするlibpython<バージョン>.soライブラリの場所をフルパスで記憶させるためである。
mkdir build && cd build # Python 3.12以降の場合 ../configure --prefix=<Pythonのインストールディレクトリ> \ --enable-optimizations --enable-shared \ LDFLAGS="-Wl,-rpath /<Pythonのインストールディレクトリ>/lib" # Python 3.11以前の場合 ../configure --prefix=<Pythonのインストールディレクトリ> \ --enable-optimizations --enable-shared \ LDFLAGS="-Wl,-rpath /<Pythonのインストールディレクトリ>/lib64" make -j $(nproc) # configureスクリプトで--prefix
オプションを付加している場合 make install # configureスクリプトで--prefix
オプションを付加していない場合 make altinstall
Python 3.11以前をインストールする場合は、以下に示すディレクトリにシンボリックリンクを作成する。
ln -s /<Pythonのインストールディレクトリ>/lib64/python<バージョン>/lib-dynload/ \ /<Pythonのインストールディレクトリ>/lib/python<バージョン>/
必要ならば、~/.profileファイル等に、環境変数PATH
およびLD_LIBRARY_PATH
を追記する。
export PATH="/<Pythonのインストールディレクトリ>/bin:$PATH"
export LD_LIBRARY_PATH="/<Pythonのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"
※注意
--enable-shared
オプションを使用する場合の注意点において、
Pythonの実行バイナリやmod_wsgiライブラリ等のダイナミックリンクを行う側はlibpythonX.X.soライブラリに依存するが、libpythonX.X.soライブラリを使用しない状態になる可能性もある。
例えば、/usr/local/Pythonディレクトリにインストールして/usr/local/Python/bin/pythonを実行する場合、
設定や環境変数によっては、勝手に/usr/lib/libpythonX.X.soや/usr/local/Python/lib/libpythonY.Y.soが使用される危険性がある。
環境変数LD_LIBRARY_PATH
を使用することにより、読み込むライブラリの場所を指定できるが、
複数のバージョンのPythonを並列して使用する場合、ユーザが手動で環境変数の切り替えを行う必要があり、非常に煩雑になる。
そのため、必ず、rpath
オプションを指定してPythonをインストールしなければならない。
PinePhone(クロスコンパイル)
AArch64向けのPythonをクロスコンパイルするための手順を示す。
クロスコンパイルする前に、ホストPCに同じバージョンのPythonがインストールされていることを確認する。
まず、以下のディレクトリを作成する。
mkdir -p /<Pythonのインストールディレクトリ>/Python_AArch64
ダウンロードしたファイルを解凍するため、以下のコマンドを実行する。
tar xf Python-3.8.6.tar.xz
解凍したディレクトリに移動して、コンパイル用のディレクトリを作成する。
cd Python-3.8.6 && mkdir build
AArch64向けにPythonをビルドおよびインストールする。
set -x -e export HOST_ARCH=aarch64-none-linux-gnu && \ export TOOL_PREFIX=/<GCC AArch64ツールチェインのインストールディレクトリ>/bin/$HOST_ARCH && \ export CC=$TOOL_PREFIX-gcc && \ export CXX=$TOOL_PREFIX-g++ && \ export CPP="$TOOL_PREFIX-g++ -E" && \ export AR=$TOOL_PREFIX-ar && \ export RANLIB=$TOOL_PREFIX-ranlib && \ export LD=$TOOL_PREFIX-ld && \ export READELF=$TOOL_PREFIX-readelf && \ export LDLAST="-lgcov" ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no ac_cv_have_long_long_format=yes \ ../configure --prefix=<一時的にAArch64向けPythonをインストールするディレクトリ> \ --build=x86_64-pc-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu \ --disable-ipv6 \ --enable-shared \ --with-ensurepip=yes \ --enable-optimization \ --with-zlib-dir=/usr/lib64 make -j $(nproc) \ BLDSHARED="$TOOL_PREFIX-gcc -shared" \ CROSS-COMPILE=$TOOL_PREFIX- CROSS_COMPILE_TARGET=yes make install \ BLDSHARED="$TOOL_PREFIX-gcc -shared" \ CROSS-COMPILE=$TOOL_PREFIX- CROSS_COMPILE_TARGET=yes
インストールの確認
ターミナルを起動後、以下のコマンドを実行する。
Pythonのバージョン情報が表示されたら正常にインストールされている。
python3.8 --version
Hello Worldの表示
最後に、Pythonを動かす。
ターミナルを起動して、以下のコマンドを実行する。
python3.8
最下行に、以下のように表示されていれば、Pythonがコマンドを待っている状態である。
>>>
その状態で以下の文を実行すると、その下に"Hello World!"と表示される。
print("Hello World!")
tkinterのインストール
TCL / TKを使用してGUIを描画する場合は、TCL / TKをインストールする。
パッケージ管理システムを使用してインストール
# RHEL sudo dnf install tkinter tk-devel # SUSE sudo zypper install python3-tk
ソースコードからインストール
- TCL / TKの公式Webサイトにアクセスして、TCL / TKをダウンロードして解凍する。
- 解凍したディレクトリのunixディレクトリに移動して、ビルド用ディレクトリを作成する。
- TCLのインストール
cd ~/tcl<TCLのバージョン名>/unix && mkdir build && cd build
../configure --prefix=/<Pythonのインストールディレクトリ>/TCL_TK --enable-threads --enable-symbols
make -j $(nproc)
make install
- TKのインストール
cd ~/tk<TKのバージョン名/unix && mkdir build && cd build
../configure --prefix=/<Pythonのインストールディレクトリ>/TCL_TK \
--with-tcl=<TCLのビルドディレクトリ 例. $HOME/tcl<TCLのバージョン名>/unix/build>
make -j $(nproc)
make install
tkinterが正常にインストールされたかどうかを確認する。
# ターミナルで確認する場合 python3 -m tkinter # Pythonインタラクティブで確認する場合 >>> import tkinter >>> tkinter._test()
また、Python2にtkinterをインストールする場合は、以下のコマンドを実行する。
python -m Tkinter
tknterが正常にインストールされたか確認する。
ターミナルで確認する場合 python -m tkinter Pythonインタラクティブで確認する場合 >>> import tkinter >>> tkinter._test()
その他
PyGObjectのインストール
PyGObjectが提供するPythonバインディングを使用して、GTKベースのGUIアプリケーションを実行することができる。
これには、PyGObject、GTK、それらの依存関係をインストールする必要がある。
- パッケージ管理システムでのインストール
- 以下のコマンドを実行する。
- RHEL :
sudo dnf install python3-gobject gtk3
- SUSE :
sudo zypper install python3-gobject python3-gobject-Gdk typelib-1_0-Gtk-3_0 libgtk-3-0
- 以下のサンプルコードを実行する。
python3 Sample.py
- PIPコマンド(PyPI)でのインストール
- GTKと依存関係をビルドするため、以下のコマンドを実行する。
- RHEL :
sudo dnf install pkg-config gcc gcc-c++ python3-devel gtk3-devel gobject-introspection-devel cairo-devel
- SUSE :
sudo zypper install pkg-config gcc gcc-c++ python3-devel cairo-devel gtk3-devel gobject-introspection-devel
- PycairoとPyGObjectをビルド・インストールするため、以下のコマンドを実行する。
pip3 install pycairo
pip3 install PyGObject
- 以下のサンプルコードを実行する。
python3 Sample.py
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
window = Gtk.Window(title="Hello World")
window.show()
window.connect("destroy", Gtk.main_quit)
Gtk.main()