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

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
38行目: 38行目:
#: <code>export PATH="$HOME/InstallSoftware/Python/Python-3_8_6/bin:$PATH"</code>
#: <code>export PATH="$HOME/InstallSoftware/Python/Python-3_8_6/bin:$PATH"</code>
#: <code>export LD_LIBRARY_PATH="$HOME/InstallSoftware/Python/Python-3_8_6/lib64:$LD_LIBRARY_PATH"</code>
#: <code>export LD_LIBRARY_PATH="$HOME/InstallSoftware/Python/Python-3_8_6/lib64:$LD_LIBRARY_PATH"</code>
<br>
--enable-sharedオプションの問題点において、<br>
python実行ファイルやmod_wsgi等のライブラリをリンクするプログラムが、<br>libpython3.8.soライブラリに依存する場合、想定するlibpython3.8.soライブラリを使用しない状態になる可能性がある。<br>
<br>
例えば、--prefix=/usr/local/Python-2.7.3 でビルドしてインストールした場合、<br>
/usr/local/Python-2.7.3/bin/pythonを実行すると、設定や環境変数によっては /usr/lib/libpython2.7.so や /usr/local/Python-2.7.2/lib/libpython2.7.so が使われてしまう可能性があります。<br>
<br>
環境変数 LD_LIBRARY_PATH を使うと優先して読み込むライブラリの場所を指定することができますが、複数のバージョンの Python を並列して使っている場合は環境変数の切り替えを自分でやるのも面倒ですし、同じサーバーを他の人も使っている場合はその人が混乱する場合もあります。<br>
<br><br>
<br><br>



2021年3月22日 (月) 05:47時点における版

Pythonのダウンロード

こちらの公式サイトから、Pythonのソースコードをダウンロードする。
ここでは、最新のPython3.8.6(2020/9/30 現在)の最新を導入するので、"Latest Python 3 Release - Python 3.8.6"を選択する。
または、以下のコマンドを実行してダウンロードする。

mkdir -p ~/InstallSoftware/Python/Python-3_8_6
wget https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tar.xz



依存関係のライブラリのインストール

Pythonをインストールするために、依存関係のライブラリをインストールする。

# CentOS
sudo yum 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



Pythonのインストール

ここでは、Pythonをホームディレクトリにインストールする。

  1. ダウンロードしたファイルを解凍するため、以下のコマンドを実行する。
    tar xvf Python-3.8.6.tar.xz
  2. 解凍したディレクトリに移動して、コンパイル用のディレクトリを作成する。
    cd Python-3.8.6 && mkdir build
  3. 次に、Makefileを生成するため、以下のコマンドを実行する。
    Pythonを共有ライブラリ付きでインストールするには、--enable-sharedオプションを付加する。
    rpathを指定する理由は、Python等のダイナミックリンクを行う側に、リンクするlibpython3.8.so の場所をフルパスで記憶させるためである。
    ../configure --enable-optimizations --enable-shared --prefix=/home/ユーザ名/InstallSoftware/Python/Python-3_8_6 LDFLAGS=-Wl,-rpath,$HOME/InstallSoftware/Python-3_8_6/lib64
  4. Pythonのソースコードのコンパイルを行う。(-j 8オプションを使用することで、ジョブ数を増加させて高速処理を行う)
    make -j 8
  5. コンパイル完了後、インストールを行う。
    • configureスクリプトで--prefixオプションを指定する場合
      make install
    • configureスクリプトで--prefixオプションを指定しない場合
      make altinstall
  6. 以下のディレクトリにシンボリックリンクを作成する。
    ln -s ~/InstallSoftware/Python/Python-3_8_6/lib64/python3.8/lib-dynload/ ~/InstallSoftware/Python/Python-3_8_6/lib/python3.8/
  7. .profileファイルまたは.bashrcファイルに、以下のような環境変数パスを追記する。
    特に、--enable-sharedオプションを付加する場合は、環境変数LD_LIBRARY_PATHにライブラリディレクトリを追加する。
    export PATH="$HOME/InstallSoftware/Python/Python-3_8_6/bin:$PATH"
    export LD_LIBRARY_PATH="$HOME/InstallSoftware/Python/Python-3_8_6/lib64:$LD_LIBRARY_PATH"


--enable-sharedオプションの問題点において、
python実行ファイルやmod_wsgi等のライブラリをリンクするプログラムが、
libpython3.8.soライブラリに依存する場合、想定するlibpython3.8.soライブラリを使用しない状態になる可能性がある。

例えば、--prefix=/usr/local/Python-2.7.3 でビルドしてインストールした場合、
/usr/local/Python-2.7.3/bin/pythonを実行すると、設定や環境変数によっては /usr/lib/libpython2.7.so や /usr/local/Python-2.7.2/lib/libpython2.7.so が使われてしまう可能性があります。

環境変数 LD_LIBRARY_PATH を使うと優先して読み込むライブラリの場所を指定することができますが、複数のバージョンの Python を並列して使っている場合は環境変数の切り替えを自分でやるのも面倒ですし、同じサーバーを他の人も使っている場合はその人が混乱する場合もあります。


インストールの確認

ターミナルを起動後、以下のコマンドを実行する。
Pythonのバージョン情報が表示されたら正常にインストールされている。

python3.8 --version



Hello Worldの表示

最後に、Pythonを動かす。
ターミナルを起動して、以下のコマンドを実行する。

python3.8


最下行に、以下のように表示されていれば、Pythonがコマンドを待っている状態である。

>>>


その状態で以下の文を実行すると、その下に"Hello World!"と表示される。

 print("Hello World!")



tkinterのインストール

PythonでGUIを使用した描画処理を行う場合は、tkをインストールする。

sudo zypper install python3-tk


tknterが正常にインストールされたか確認する。

ターミナルで確認する場合
python3 -m tkinter

Pythonインタラクティブで確認する場合
>>> import tkinter
>>> tkinter._test()


また、Python2.xにtkinterをインストールする場合は、以下のコマンドを実行する。

python -m Tkinter


tknterが正常にインストールされたか確認する。

ターミナルで確認する場合
python -m tkinter

Pythonインタラクティブで確認する場合
>>> import tkinter
>>> tkinter._test()



その他

PyGObjectのインストール

PyGObjectが提供するPythonバインディングを使用して、GTKベースのGUIアプリケーションを実行することができる。
これには、PyGObject、GTK、それらの依存関係をインストールする必要がある。

  • パッケージ管理システムでのインストール
    以下のコマンドを実行する。
    • CentOS : 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と依存関係をビルドするため、以下のコマンドを実行する。
    • CentOS : sudo dnf install gcc gobject-introspection-devel cairo-devel pkg-config python3-devel gtk3
    • SUSE : sudo zypper install cairo-devel pkg-config python3-devel gcc 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()