📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

編集の要約なし
 
(同じ利用者による、間の8版が非表示)
1行目: 1行目:
== Pythonのダウンロード ==
== 概要 ==
[https://www.python.org/downloads/ こちらの公式サイト]から、Pythonのソースコードをダウンロードする。<br>
Pythonの特徴を以下に示す。<br>
最新のPythonを導入する場合、"Latest Python 3 Release - Python <バージョン>"を選択する。<br>
* シンプルで読みやすい文法
または、以下のコマンドを実行してダウンロードする。<br>
*: Pythonはコードの可読性を重視している。
mkdir -p /<Pythonのインストールディレクトリ>/Python_<バージョン>
*: そのため、他の言語に比べてシンプルな文法を持ち、インデントを使用してブロックを示す。
wget [https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tar.xz https://www.python.org/ftp/python/x.x.x/Python-x.x.x.tar.xz]
*: これにより、コードが視覚的に理解しやすい。
*: <br>
* 動的型付け
*: 変数の型を明示的に宣言する必要がなく、実行時に型が決定される。
*: これにより、開発速度が向上する。
*: <br>
* 豊富な標準ライブラリ
*: Pythonには多くの標準ライブラリが含まれており、ファイル操作、ネットワーク通信、データ解析、Web開発等、様々な機能を簡単に実装できる。
*: <br>
* マルチパラダイム
*: Pythonはオブジェクト指向プログラミング、手続き型プログラミング、関数型プログラミングをサポートしている。
*: これにより、様々なスタイルでコーディングすることが可能である。
*: <br>
* クロスプラットフォーム
*: Pythonは、Windows、MacOS、Linux等の様々なプラットフォームで動作する。
*: これにより、開発したコードを異なる環境で再利用できる。
<br>
Pythonの用途を以下に示す。<br>
* Web開発
*: DjangoやFlask等のフレームワークを使用して、Webアプリケーションを開発することができる。
*: これらのフレームワークは、迅速な開発とスケーラブルなアプリケーション構築をサポートする。
*: <br>
* データサイエンスと機械学習
*: Pandas、NumPy、Matplotlib、Scikit-learn、TensorFlow、PyTorch等、多くのライブラリがデータ分析や機械学習のために用意されている。
*: これにより、データの前処理、可視化、モデル構築が効率的に行うことができる。
*: <br>
* 自動化とスクリプティング
*: Pythonは、システム管理やタスクの自動化に広く使用されている。
*: シンプルなスクリプトで複雑な作業を自動化することが可能である。
*: <br>
* 科学技術計算
*: SciPyやSymPy等のライブラリを使用して、科学技術計算やシミュレーションを行うことができる。
*: これにより、研究や開発において複雑な計算を簡単に処理できる。
*: <br>
* ゲーム開発
*: Pygameなどのライブラリを使用して、シンプルなゲームを開発することができる。
*: 教育目的やプロトタイプ作成にも適している。
*: <br>
* GUIアプリケーション
*: TkinterやPyQt等のライブラリを使用して、デスクトップGUIアプリケーションを構築することができる。
<br>
Pythonに関するドキュメントを以下に示す。<br>
* Python 3の公式ドキュメント
*: https://docs.python.org/3/
*: <br>
* その他のドキュメント
*: https://www.w3schools.com/python/
<br><br>
<br><br>


== Pythonのインストール ==
== Pythonのインストール ==
==== RHEL / SUSE ====
==== RHEL / SUSE ====
ここでは、Pythonをホームディレクトリにインストールする。<br>
<br>
Pythonのビルドに必要なライブラリをインストールする。<br>
Pythonのビルドに必要なライブラリをインストールする。<br>
  # RHEL
  # RHEL
18行目: 62行目:
  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
  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
<br>
<br>
# まず、以下のディレクトリを作成する。<br><span style="color:#CC0000"><u>--enable-sharedオプションを付加する場合は、必ず、lib64ディレクトリも作成すること。</u></span>
まず、<span style="color:#CC0000"><u><code>--enable-shared</code>オプションを付加する場合は、必ず、libディレクトリまたはlib64ディレクトリも作成する必要がある。</u></span><br>
#: <code>mkdir -p /<Pythonのインストールディレクトリ>/lib64</code>
# Python 3.12以降をインストールする場合
# ダウンロードしたファイルを解凍するため、以下のコマンドを実行する。
mkdir -p /<Pythonのインストールディレクトリ>/lib
#: <code>tar xf Python-<バージョン>.tar.xz</code>
# 解凍したディレクトリに移動して、コンパイル用のディレクトリを作成する。
# Python 3.11以前をインストールする場合
#: <code>cd Python-<バージョン> && mkdir build</code>
mkdir -p /<Pythonのインストールディレクトリ>/lib64
# 次に、Makefileを生成するため、以下のコマンドを実行する。<br><br>Pythonを共有ライブラリ付きでインストールするには、<code>--enable-shared</code>オプションを付加する。<br><code>rpath</code>を指定する理由は、ダイナミックリンクを行う側に、リンクするlibpythonX.X.soの場所をフルパスで記憶させるためである。
<br>
#: <code>../configure --enable-optimizations --enable-shared --prefix=<Pythonのインストールディレクトリ> \</code><br><code>LDFLAGS="-Wl,-rpath /<Pythonのインストールディレクトリ>/lib64"</code>
[https://www.python.org/downloads/ Pythonの公式Webサイト]にアクセスして、ソースコードをダウンロードする。<br>
# Pythonのソースコードのコンパイルを行う。(<code>-j $(nproc)</code>オプションを使用することで、ジョブ数を増加させて高速処理を行う)
最新のPythonを導入する場合、"Latest Python 3 Release - Python <バージョン>"を選択する。<br>
#: <code>make -j $(nproc)</code>
<br>
# コンパイル完了後、インストールを行う。
ダウンロードしたファイルを解凍する。<br>
#* configureスクリプトで--prefixオプションを指定する場合
tar xf Python-<バージョン>.tar.xz
#*: <code>make install</code>   
cd Python-<バージョン>
#* configureスクリプトで--prefixオプションを指定しない場合
<br>
#*: <code>make altinstall</code>
Pythonをビルドおよびインストールする。<br>
# 以下のディレクトリにシンボリックリンクを作成する。
<br>
#: <code>ln -s /<Pythonのインストールディレクトリ>/lib64/python<バージョン>/lib-dynload/ /<Pythonのインストールディレクトリ>/lib/python<バージョン>/</code>
Pythonを共有ライブラリ付きでインストールする場合は、<code>--enable-shared</code>オプションを付加する。<br>
# 必要ならば、.profileファイルまたは.bashrcファイルに、以下のような環境変数パスを追記する。
また、<code>rpath</code>オプションを付加する理由としては、ダイナミックリンクを行う側に、リンクするlibpython<バージョン>.soライブラリの場所をフルパスで記憶させるためである。<br>
#: <code>export PATH="/<Pythonのインストールディレクトリ>/bin:$PATH"</code>
mkdir build && cd build
#: <code>export LD_LIBRARY_PATH="/<Pythonのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"</code>
# 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スクリプトで<code>--prefix</code>オプションを付加している場合
make install
# configureスクリプトで<code>--prefix</code>オプションを付加していない場合
  make altinstall
<br>
Python 3.11以前をインストールする場合は、以下に示すディレクトリにシンボリックリンクを作成する。<br>
ln -s /<Pythonのインストールディレクトリ>/lib64/python<バージョン>/lib-dynload/ \
      /<Pythonのインストールディレクトリ>/lib/python<バージョン>/
<br>
必要ならば、~/.profileファイル等に、環境変数<code>PATH</code>および<code>LD_LIBRARY_PATH</code>を追記する。<br>
<syntaxhighlight lang="sh">
export PATH="/<Pythonのインストールディレクトリ>/bin:$PATH"
export LD_LIBRARY_PATH="/<Pythonのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"
</syntaxhighlight>
<br>
<br>
<code>--enable-shared</code>オプションを使用する場合の注意点として、<br>
<u>※注意</u><br>
python実行ファイルやmod_wsgiライブラリ等のダイナミックリンクを行う側は、libpython3.8.soライブラリに依存するが、<br>
<code>--enable-shared</code>オプションを使用する場合の注意点において、<br>
libpython3.8.soライブラリを使用しない状態になる可能性がある。<br>
Pythonの実行バイナリやmod_wsgiライブラリ等のダイナミックリンクを行う側はlibpythonX.X.soライブラリに依存するが、libpythonX.X.soライブラリを使用しない状態になる可能性もある。<br>
<br>
<br>
例えば、/usr/local/Python_<バージョン>ディレクトリにインストールして、/usr/local/Python_<バージョン>/bin/pythonを実行する場合、<br>
例えば、/usr/local/Pythonディレクトリにインストールして/usr/local/Python/bin/pythonを実行する場合、<br>
設定や環境変数によっては、勝手に/usr/lib/libpython3.8.soや/usr/local/Python-3.7.0/lib/libpython3.7.soが使用される危険性がある。<br>
設定や環境変数によっては、勝手に/usr/lib/libpythonX.X.soや/usr/local/Python/lib/libpythonY.Y.soが使用される危険性がある。<br>
<br>
<br>
環境変数<code>LD_LIBRARY_PATH</code>を使用することで、読み込むライブラリの場所を指定できるが、<br>
環境変数<code>LD_LIBRARY_PATH</code>を使用することにより、読み込むライブラリの場所を指定できるが、<br>
複数のバージョンのPythonを並列して使用する場合、ユーザが手動で環境変数の切り替えを行う必要があり、煩雑になる。<br>
複数のバージョンのPythonを並列して使用する場合、ユーザが手動で環境変数の切り替えを行う必要があり、非常に煩雑になる。<br>
<br>
<br>
<span style="color:#CC0000"><u>そのため、必ず、<code>rpath</code>オプションを指定してPythonをインストールしなければならない。</u></span><br>
<span style="color:#CC0000"><u>そのため、必ず、<code>rpath</code>オプションを指定してPythonをインストールしなければならない。</u></span><br>
<br>
<br>
==== PinePhone(クロスコンパイル) ====
==== PinePhone(クロスコンパイル) ====
AArch64向けのPythonをクロスコンパイルするための手順を示す。<br>
AArch64向けのPythonをクロスコンパイルするための手順を示す。<br>
96行目: 168行目:
<br><br>
<br><br>


== インストールの確認 ==
== 異なるバージョンのPython ==
ターミナルを起動後、以下のコマンドを実行する。<br>
システムのデフォルトであるPython 3.6を直接削除したり置き換えてはならない。<br>
Pythonのバージョン情報が表示されたら正常にインストールされている。<br>
なぜなら、SUSEのシステムツールやパッケージマネージャーの一部が、このPythonバージョンに依存しているからである。<br>
  python3.8 --version
これを削除すると、システムが正常に動作しなくなる可能性がある。<br>
<br>
異なるバージョンのPythonを追加でインストールして、必要に応じて使い分けるというアプローチが安全で推奨される。<br>
<br>
まず、パッケージ管理システムから異なるバージョンのPythonをインストールする。<br>
# 例 : Python 3.11をインストール
# RHEL
sudo dnf install python3.11 python3.11-pip python3.11-devel
# SUSE
sudo zypper install python311 python311-pip python311-devel
<br>
この時、システムには複数のPythonバージョンが共存している状態になる。<br>
python3.6コマンドで古いバージョン、python3.11コマンドで新しいバージョンを呼び出すことができる。<br>
<br>
デフォルトで使用されるPythonバージョンを変更する場合は、update-alternativesシステムを使用する。<br>
これにより、python3コマンドを実行した際にどのバージョンが起動するかを制御することができる。<br>
# RHEL
# Python 3.11をalternativesに登録
sudo alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2
# Python 3.6もalternativesに登録
# 優先度を低く設定する
sudo alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
# 使用するバージョンを選択
sudo alternatives --config python3
<br>
# SUSE
# Python 3.11をalternativesに登録
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2
# Python 3.6もalternativesに登録
# 優先度を低く設定する
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
# 使用するバージョンを選択 (対話的に選択)
sudo update-alternatives --config python3
<br>
以下に示すように、仮想環境を使用すると、プロジェクトごとに独立したPython環境を持つことができるため、パッケージの依存関係の管理も簡単になる。<br>
# Pythonプロジェクトディレクトリに移動する
cd <プロジェクトのディレクトリ>
# 仮想環境を作成
  python3.11 -m venv <任意の仮想環境ディレクトリ名>
# 仮想環境を有効化
source <任意の仮想環境ディレクトリ名>/bin/activate
# この環境内ではPython 3.11が使用される
python --version
<br><br>
<br><br>


116行目: 241行目:
<br><br>
<br><br>


== tkinterのインストール ==
== TKinterのインストール ==
TCL / TKを使用してGUIを描画する場合は、TCL / TKをインストールする。<br>
TCL / TKを使用してGUIを描画する場合は、TCL / TKをインストールする。<br>
<br>
<br>
* パッケージ管理システムを使用する場合
==== パッケージ管理システムを使用してインストール ====
  # RHEL
  # RHEL
  sudo dnf install tkinter tk-devel
  sudo dnf install tkinter tk-devel
126行目: 251行目:
  sudo zypper install python3-tk
  sudo zypper install python3-tk
<br>
<br>
* 手動でビルドしてインストールする場合
==== ソースコードからインストール ====
*: [http://www.tcl.tk/software/tcltk/download.html TCL / TKの公式Webサイト]にアクセスして、TCL / TKをダウンロードして解凍する。
*: [http://www.tcl.tk/software/tcltk/download.html TCL / TKの公式Webサイト]にアクセスして、TCL / TKをダウンロードして解凍する。
*: 解凍したディレクトリのunixディレクトリに移動して、ビルド用ディレクトリを作成する。
*: 解凍したディレクトリのunixディレクトリに移動して、ビルド用ディレクトリを作成する。
142行目: 267行目:
**: <code>make install</code>
**: <code>make install</code>
<br>
<br>
tkinterが正常にインストールされたか確認する。<br>
tkinterが正常にインストールされたかどうかを確認する。<br>
  # ターミナルで確認する場合
  # ターミナルで確認する場合
  python3 -m tkinter
  python3 -m tkinter
150行目: 275行目:
  >>> tkinter._test()
  >>> tkinter._test()
<br>
<br>
また、Python2.xにtkinterをインストールする場合は、以下のコマンドを実行する。<br>
また、Python2にtkinterをインストールする場合は、以下のコマンドを実行する。<br>
  python -m Tkinter
  python -m Tkinter
<br>
<br>