少ないコードでより多くのことを行うためのPythonでのライブラリの使用方法
他のプログラミング言語と同様に、Pythonにはコーディング作業を簡単にするためのライブラリがあります。これらをどのように活用し、自分自身のライブラリをどのように作成するかについて説明します。
Pythonライブラリとは何ですか?
ライブラリは共有コードのコレクションです。これはPythonで一般的で、「モジュール」とも呼ばれていますが、他のプログラミング言語にも広く存在します。ライブラリは、どのプログラマーでも自分のプログラムで使用できる関数を定義しており、公共図書館が誰にでもその資料へのアクセスを提供するのと似ています。
ライブラリを使用する利点は、自分自身のソリューションをコーディングする必要がないため、時間と労力を節約できることです。ライブラリは、あなたが思いつくいかなるものよりも、十分にテストされていてデバッグされています。また、それらを使用することで、自分自身ではできないこともできるようになります。
Pythonには、グラフィックスやゲーム開発などのタスクに使用できる多くのライブラリがあります。私のお気に入りのライブラリはデータ分析のためのものが多いです。Pythonは、これらのタスクに使用できるライブラリが豊富にあるため、統計やデータサイエンスに特に人気があります。
Pythonライブラリのインストール方法
システムにPythonライブラリをインストールする方法はいくつかあります。Linuxディストリビューションを使用している場合は、ディストリビューションのパッケージマネージャにPythonライブラリが含まれていることが多いです。たとえば、DebianやUbuntuシステムでは、ライブラリは通常「python-」または「python3-」で始まります。これにより、ライブラリはシステム全体にインストールされるため、管理者アクセスが必要です。
システムにルートまたは管理者アクセスがない場合でも、ローカルにPythonライブラリをインストールする方法はいくつかあります。
Python Package Index (PyPi) にリストされている Python ライブラリをインストールするために pip ツールを使用できます。
例えば、NumPyをインストールするには:
pip install numpy
virtualenvユーティリティを使用して、プロジェクトごとに仮想環境でライブラリをインストールできます。
仮想環境の概念をさらに進めるために、Mambaを使用することができます。Mambaは、データサイエンティストやアナリストの間で人気のあるツールで、プロジェクト固有の環境を作成することを可能にします。
私はすでにデータ分析に人気のあるいくつかのライブラリがインストールされた、統計計算用のMamba環境を持っています。シェルでそれをアクティブにできます:
mamba activate stats
多くのPythonライブラリはこの言語に付属しています。これはPython文化の誇りの一つです。Python標準ライブラリには、オペレーティングシステムとのやり取りから、時間や日付の操作まで、さまざまなモジュールが含まれています。これが、Pythonプログラマーがこの言語には「バッテリーが含まれている」と言う理由です。
Pythonライブラリ全体をインポートする
スクリプトやインタラクティブなPythonモードで全体のPythonライブラリをインポートするには、importコマンドを使用します。
例えば、NumPyモジュールをインポートするには、次のコマンドを使用します。
import numpy
ライブラリをインポートすると、そのモジュールの関数にアクセスできます。それはまるで、いくつかの関数を定義したかのようです。関数はそれぞれの名前空間の下にインポートされます。これは、デフォルトでは、ライブラリの関数はPythonの組み込みコマンドとは別に保持されることを意味します。これを変更するいくつかの方法をお見せしますが、デフォルトの動作はほとんどの状況でより良いです。
これらの関数にアクセスするには、先ほどインポートしたモジュールを呼び出すことができます。これは、オブジェクト指向プログラミングの仕組みを理解していれば、実質的にオブジェクトです。これらの関数は、ライブラリをインポートして作成したオブジェクトにプライベートなメソッドです。
たとえば、NumPyを使用して配列の算術平均または平均を計算するには、次のように入力します:
numpy.mean(numbers)
これはNumPyの平均関数を呼び出します。
関数にアクセスするために毎回「numpy」と入力するのは面倒だと思うかもしれませんが、その通りです。ショートカットとして他の名前でライブラリをインポートすることができます。NumPyでよく見られる一般的な例は、インポート文で名前を「np」に短縮することです:
import numpy as np
これからnumpyを「np.」と呼ぶことができます。以前の平均計算を再度書き直しましょう:
np.mean(numbers)
ライブラリの一部をインポートする(インタラクティブPythonのみ!)
多くの場合、標準の対話型PythonインタプリタやIPythonのような対話型Pythonセクションで作業していると、一度に多くのライブラリから一つか二つの関数だけをインポートしたいと思うことがよくあります。特に、セッション中にそれらを繰り返し使用したい場合です。これはPythonでも簡単に実行できます。
NumPyから単一の関数をメインネームスペースにインポートするには、この構文を使用できます:
from library import function
例えば、NumPyからmean関数をインポートするには:
from numpy import mean
関数をカンマで区切って複数インポートすることもできます。例えば、NumPy から mean 関数と median 関数をインポートするには:
from numpy import mean, median
これらの関数をインポートすれば、"numpy"や"np."を前につける必要はありません。まるでデフォルトのPython関数の一部であるかのように、それらを使用できます。
例えば、数の配列の平均を計算するためには
mean(numbers)
中央値は:
median(numbers)
関数を単独でインポートすることは、入力を節約できるため、インタラクティブなPythonセッションにより適しています。スクリプト内でもできますが、おすすめしません。デフォルトのPython関数に使用される名前空間を上書きしてしまう可能性があります。これがスクリプトにバグを引き起こすかもしれません。もしフォーラムやIRCチャットで助けを求めると、他のPythonistaたちが困惑するかもしれません。これが、スクリプト内ではできるだけこのようなインポートを避けるべき理由です。
自分自身のPythonライブラリを作成し、インポートする
自分のPythonライブラリをインポートするのも簡単です。Pythonの専門家である必要はありません。必要なのはテキストエディタと端末を使う能力だけです。
Pythonモジュールは最終的にはPythonで定義された関数のコレクションです。.pyで終わるファイルを作成すれば、スクリプトを書いているのと同じです。独自のPython関数を作成した場合、それらをファイルにまとめて、他の組み込みまたはインストールされたPythonモジュールと同様にインポートすることができます。
モジュールをインポートするには、それに実行権限があることを確認してください。Unix系システム、Linux、macOSターミナルなどでchmodコマンドを使用することができます。
chmod +x my_library.py
ライブラリは、前述の方法を使用してインポートできます。モジュールと同じディレクトリにいる場合は、インポート文を使用するだけで済みます。たとえば、ライブラリをインポートするには:
import my_library
ライブラリが別のディレクトリにある場合、検索パスを変更する方法はいくつかあります。最初の方法は、PYTHONPATH環境変数を使用することです。これは、Pythonがモジュールを探すために使用するディレクトリのリストです。これをコマンドラインまたはBashの.bashrcファイルのようなスタートアップファイルでシステムシェルで変更できます。これはLinuxシステムのPATH環境変数と同様に、コロン(:)文字で区切られたディレクトリのリストです。
Linuxシェルでは、echoコマンドを使用してそれを調べることができます。
echo $PYTHONPATH
変更するには、それを追加するのが最善です。
export PYTHONPATH="$PYTHONPATH:/path/to/my/modules"
これにより、独自のディレクトリを追加する前に、既存のモジュール検索パスが保持されます。
組み込みの sys モジュールを使用して検索パスを変更することもできます。インタラクティブな Python セッションでそれをインポートするだけです:
import sys
それを調べてください:
sys.path
ディレクトリを検索パスに追加するには、appendメソッドを使用します:
sys.path.append('/path/to/my/modules')
Python スクリプトとモジュールやライブラリの間に実際の区別がないため、一方をもう一方に簡単に変換できます。操作を小さな関数に分けることは良いプログラミングスタイルです。また、別のスクリプトや対話セクションからそれらを呼び出すこともできますが、スクリプトを持つ場合はどうでしょうか?スクリプトの操作を「main」関数に定義すればよいのです。
if __name__ == "__main__":
これは、Pythonインタープリタがスクリプトをインポートするのではなく、スクリプトとして実行しているかどうかを確認します。このセクションの後に、スクリプトで実行するためのすべてのコードを置くことができ、関数は別のスクリプトやインタラクティブセッションでインポート可能なままにしておくことができます。
モジュールを使用する能力により、Pythonの膨大なモジュールの配列を活用できます。自分一人では考えられなかった以上のことができるようになります。ゼロからコーディングするよりも、時間と労力を大幅に節約できるでしょう。





