「インストール - Python」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
9行目: 9行目:
== Pythonのインストール ==
== Pythonのインストール ==
==== RHEL / SUSE ====
==== RHEL / SUSE ====
ここでは、Pythonをホームディレクトリにインストールする。<br>
<br>
Pythonのビルドに必要なライブラリをインストールする。<br>
Pythonのビルドに必要なライブラリをインストールする。<br>
  # RHEL
  # RHEL
18行目: 16行目:
  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>オプションを使用することで、ジョブ数を増加させて高速処理を行う)
ダウンロードしたファイルを解凍する。<br>
#: <code>make -j $(nproc)</code>
tar xf Python-<バージョン>.tar.xz
# コンパイル完了後、インストールを行う。
cd Python-<バージョン>
#* configureスクリプトで--prefixオプションを指定する場合
<br>
#*: <code>make install</code>   
Pythonをビルドおよびインストールする。<br>
#* configureスクリプトで--prefixオプションを指定しない場合
<br>
#*: <code>make altinstall</code>
Pythonを共有ライブラリ付きでインストールする場合は、<code>--enable-shared</code>オプションを付加する。<br>
# 以下のディレクトリにシンボリックリンクを作成する。
また、<code>rpath</code>オプションを付加する理由としては、ダイナミックリンクを行う側に、リンクするlibpython<バージョン>.soライブラリの場所をフルパスで記憶させるためである。<br>
#: <code>ln -s /<Pythonのインストールディレクトリ>/lib64/python<バージョン>/lib-dynload/ /<Pythonのインストールディレクトリ>/lib/python<バージョン>/</code>
mkdir build && cd build
# 必要ならば、.profileファイルまたは.bashrcファイルに、以下のような環境変数パスを追記する。
#: <code>export PATH="/<Pythonのインストールディレクトリ>/bin:$PATH"</code>
# Python 3.12以降の場合
#: <code>export LD_LIBRARY_PATH="/<Pythonのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"</code>
../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>
<u>※注意</u><br>
<u>※注意</u><br>

2024年5月16日 (木) 07:38時点における版

Pythonのダウンロード

こちらの公式サイトから、Pythonのソースコードをダウンロードする。
最新のPythonを導入する場合、"Latest Python 3 Release - Python <バージョン>"を選択する。
または、以下のコマンドを実行してダウンロードする。

mkdir -p /<Pythonのインストールディレクトリ>/Python_<バージョン>
wget https://www.python.org/ftp/python/x.x.x/Python-x.x.x.tar.xz



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サイトにアクセスして、ソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。

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()