これは李研新M0向け勉強会のPythonに関する資料です。
[TOC]
モジュールとは、C++
でいうところのライブラリとだいたい同じ概念です。効率的な開発には、本体に標準で付属するモジュール群や、サードパーティー製のモジュールの活用が不可欠です。
今回の勉強会ではPythonの環境構築にAnacondaを用いたので、Python本体(+標準モジュール群)だけでなく、よく使われるサードパーティー製モジュール群も一緒にインストールされており、すぐ使える状態が整っています。
- 標準ライブラリ
- 標準ライブラリレファレンス
- Pythonをインストールすると本体に標準で付属される、最初から利用可能なモジュール(
C++
でいうところの<iostream>
など)の一覧です。
- Pythonをインストールすると本体に標準で付属される、最初から利用可能なモジュール(
- 標準ライブラリミニツアー1, ミニツアー2
- 膨大な標準モジュール群のうち、基本的なものが紹介されています。公式チュートリアルの一項目です。
- 標準ライブラリレファレンス
- サードパーティー製とそのインストール方法
- (
C++
でいうところのOpenCV
など)
- (
- os, os.path ディレクトリやファイルなど、ファイルシステム上の操作を行うモジュールです。
import os
dir_name = "data"
file_name = "0.jpg"
# ファイルパスの安全な結合方法
file_path = os.path.join(dir_name, file_name)
print(os.path.exists(file_path)) # ファイルの存在チェック
- re 正規表現のモジュールです。
import re
text = "あいうえおかきくけこさしすせそ"
pattern = "お(.*)さ"
match = re.search(pattern, text)
print(match.group(1)) # かきくけこ
- urllib
インターネットからURLをもとにデータを取得するためのモジュールです。
ファイルを読み書きするための
open関数
に似た作りになっていて、openした後にreadして読み込むところは同じです。下記の例では、yahoo.co.jpのトップページをダウンロードして表示しています。
import urllib
f = urllib.request.urlopen('http://www.yahoo.co.jp')
html = f.read()
print(html)
- smtplib メールサーバを介してメールを送信するためのモジュールです。 【これは実行不要です】なお、これを実行するためには、McAfeeの アクセス保護を無効にする 必要があります。また、このサンプルは研究室LAN内からしか実行できません。しかし、SMTPサーバとしてgmailなどを使えば、どこからでも送信可能にできます(その場合、若干の拡張が必要になります)。
import smtplib
# 研究室のメールサーバに接続
server = smtplib.SMTP('aissrv.ais.ics.ritsumei.ac.jp')
# 送信者アドレス、宛先アドレス、本文を指定する
server.sendmail('sakurai@ais.ics.ritsumei.ac.jp',
'rsakurai@fc.ritsumei.ac.jp',
'This is a test mail')
- SimpleHTTPServer 【Python3未対応につき動きません】カレントディレクトリを簡易HTTPサーバにしてしまうモジュールです。
import SimpleHTTPServer
SimpleHTTPServer.test()
上記スクリプトを実行した後、ブラウザから http://localhost:8000/ を開くと、カレントディレクトリのファイル一覧が表示されます。ファイルのリンクをクリックするとファイルが表示され、ダウンロードすることもできます。普通にインターネットに公開されているため、 http://133.19.61.144:8000/ にアクセスすると、創成用14番機のファイルがダウンロードできます。 危険なので使用には注意が必要です。
開発内容に応じて必要なモジュールをインストールすることになると思います。
サードパーティ製モジュールは様々な方式で配布されており、インストール方法にも色々あるため、正直言ってややこしいです。PythonのインストールにAnacondaを使った場合は、以下の3つの方法で外部のモジュールをインストールすることになります。
conda install module_name
を使う方法pip install module_name
を使う方法- ソースコードをダウンロードし、
python setup.py install
とする方法
これらは、番号が若いほうの方法ほど推奨されます。そのため、インストールしたいモジュールを見つけた場合は、上から順番に試してください。
1のconda
は、Anacondaのパッケージ管理機能を使う方法です。可能ならこの方法を使うことが理想的です。
- 利点: パッケージ間の依存関係やバージョンに関わる整合性が、Anacondaの開発スタッフによって検証されているので、不具合が起きにくい。また、アンインストールが簡単。
- 欠点: Anacondaで管理可能なモジュールはメジャーなものだけなので、マイナーなモジュールはこの方法でインストールできないことが多い。
具体的には、condaの対応モジュール一覧 にあるものはconda経由でインストールできます(モジュール名の右肩にLinuxとか付いているものは除く)。
2のpip
は現状最も一般的なインストール方法です。condaが無理だった場合にこの方法を使います。
- 利点: 多くのモジュールがpipでインストールできる。また、アンインストールが簡単。
- 欠点: Anacondaほど整合性のチェックが徹底的ではない。
pipはPyPiというモジュール共有システムを介してインストールする方法です。pipも同様にパッケージ管理機能を有しており、依存関係の解決は行われます。しかし、検証はモジュール作者に委ねられているため、不具合はありえます。
3のsetup.py
は、パッケージ管理を介さず、ソースコードから直接インストールする方式です。この方法でインストールした場合は、 自動アンインストールできません 。
- 利点: インストール方法が提供されていること自体が利点。
- 欠点: パッケージ管理機能の対象とならない。また、アンインストールは手動で行う必要がある。
これは、モジュールの作者が提供する直接的なインストール方法です。GitHubなどにおいてソースコードの状態で配布してくれている場合に、このインストール方法が提供されていることがあります。