Python pipでよく使うコマンド ( install, upgrade )

よく使うpipコマンドをメモとして掲載します。

pip よく使うコマンド一覧

パッケージ インストールpip install [パッケージ名]
パッケージ インストール(バージョン指定)pip install [パッケージ名]==[バージョンNo]
パッケージ アップグレードpip install -U [パッケージ名]
パッケージ アンインストールpip uninstall [パッケージ名]
パッケージの詳細表示pip show [パッケージ名]
pipインストールパッケージ 一覧pip list
pipインストールパッケージをリストに保存pip freeze > requirements.txt
パッケージリストからpipで一括インストールpip install -r requirements.txt
pip本体のアップグレードpip install -U pip

pip よく使うコマンド一覧

# パッケージ インストール
pip install [パッケージ名]

# パッケージ インストール(バージョン指定)
pip install [パッケージ名]==[バージョンNo]

# パッケージ アップグレード
pip install -U [パッケージ名]

# パッケージ アンインストール
pip uninstall [パッケージ名]

# パッケージの詳細表示
pip show [パッケージ名]

# pipインストールパッケージ 一覧
pip list

# pipインストールパッケージをリストに保存
pip freeze > requirements.txt

# パッケージリストからpipで一括インストール
pip install -r requirements.txt

# pip本体のアップグレード
pip install -U pip


pip よく使うコマンド一覧 解説

各コマンドについて、ざっくり解説します。

パッケージのインストール

パッケージのインストールは、下記のコマンドのみでOKです。何もオプションを指定しないと、最新版(latest)がインストールされます。

#  パッケージのインストール
pip install [パッケージ名]

例) pip install pandas

パッケージのインストール(バージョン指定)

Pythonのバージョンや他のパッケージとの依存関係で特定のバージョンを指定する場合は、下記のコマンドでバージョンを指定します。

# パッケージのインストール(バージョン指定)
pip install [パッケージ名]==[バージョンNo]

例)pip install pandas==0.22.0

パッケージのアップグレード(アップデート)

パッケージを最新バージョンへ更新することをアップグレードといいます。オプションの「-U」または「–upgrade」を指定します。

# パッケージのアップグレード(アップデート)
pip install -U [パッケージ名]
# または
pip install --upgrade [パッケージ名]

例)pip install -U pandas

パッケージのアンインストール

パッケージのアンインストールは半角スペースをいれることで複数同時に実行できます。また、オプションなしだと、削除実施時に、パッケージを本当に削除するかの確認(yの入力を求められる)があります。この削除確認は、「-y」または「–yes」オプションを追加で指定することで省略可能です。

# パッケージのアンインストール
pip uninstall [パッケージ名]
pip uninstall [パッケージ名] [パッケージ名] [パッケージ名]
pip uninstall -y [パッケージ名] [パッケージ名] [パッケージ名]

例)pip uninstall requests pandaas

パッケージの詳細表示

パッケージの詳細情報を表示します。名前、バージョン、作者、ライセンス、依存パッケージなどが表示されます。

# パッケージの詳細表示
pip show [パッケージ名]

例)pip show pandas

pipインストールパッケージ 一覧

pipを利用してインストールしたパッケージの名前、バージョンを表示します。オプション「-o」(「–outdated」でもOK)をつけると、最新でないパッケージのバージョンと最新バージョンの一覧を表示します。

# pipインストールパッケージ一覧
pip list

# 最新でないパッケージのバージョンと最新バージョン一覧
pip list -o
または
pip list --outdated

pipインストールパッケージをリストに保存

pipを利用しているパッケージ一覧を保存します。このファイル(今回はテキストファイル)を利用して、環境のバックアップをとったり、他のマシンへ同じ環境を構築します。

「pip freeze」でパッケージとバージョンを表示し、「>」で書き込みを指定し、「requirements.txt」というファイル名で保存します。

# pipインストールパッケージをリストに保存
pip freeze > requirements.txt

パッケージリストからpipで一括インストール

オプションの「-r」をつけることで、ファイルからパッケージを一括でインストールします。

# パッケージリストからpipで一括インストール
pip install -r requirements.txt

pip 自体のアップグレード

pip自体のアップグレードです。ワーニングがでたら、最新版に更新しています。

# pip本体のアップグレード
pip install -U pip

# または
python -m pip install --upgrade pip

PythonでLINE、Slack、Discordへメッセージ、通知を送る

Pythonでアプリにメッセージや通知を送るためのサンプルコードです。

PythonでLINE、Slack、Discordへメッセージ、通知を送る

LINE、Slack、Discordといったアプリにメッセージや通知を送るには、Pythonプログラムから各アプリのメッセージ受信アドレス(URL)へHTTPリクエスト(https)を送信します。

今回は下記のモジュールを利用して、HTTPリクエストを送信します。

# requestsをインストール
pip install requests

今回は、requestsモジュールを利用しますが、標準モジュールのurllibを利用するなど、他の方法でもメッセージを送ることが可能です。

PythonでLINE、Slack、Discordへメッセージ、通知を送る

では、先にサンプルコードを掲載します。

サンプルコード


解説

では、それぞれ解説です。

LINEにPythonでメッセージ、通知を送る

LINEへメッセージを送るためには、LINE notifyというサービスを利用する必要があります。

LINE notifyの公式URLはこちら

このサービスを登録すると、LINE notifyのURLにメッセージ(HTTPリクエスト)を送信すると、送ったメッセージをLINE通知として転送してくれます。LINEの通知先は、LINE notifyの公式URLからログインし、設定画面から登録します。※グループのみ登録可能だったはずです

LINEにPythonでメッセージ、通知を送るサンプルコード

def line_notify(token, message):
    """
    LINE send message.

    Args:
        token (str): line notify token.
        message (str): message.
    """
    LINE_NOTIFY_URL = 'https://notify-api.line.me/api/notify'
    if token:
        requests.post(LINE_NOTIFY_URL,
                      headers={'Authorization': 'Bearer {}'.format(token)},
                      data={'message': '\n{}'.format(message)})

line_notifyメソッドでLINEにメッセージを送信します。引数1には、LINE notfyで取得したトークン、引数2には、送信するメッセージを設定します。

「LINE_NOTIFY_URL 」には、LINE notifyのURLを固定で指定しています。
「if token」でトークンが設定されているかを判定しています。
「requests.post」メソッドで、LINE notifyのURLにHTTPリクエスト(POST)を送信します。headersには、LINE notfyで取得したTokenを設定し、dataにはメッセージを設定しています。


SlackにPythonでメッセージ、通知を送る

Slackにメッセージを送るには、slack incoming-webhookを利用します。

Webhookとは、外部システムからSlack送られてくるHTTPリクエストのことで、今回の場合、PythonプログラムからSlackへ送るメッセージのことを指します。

Slackのincoming-webhookを利用するにはこちらのページにアクセスし、「Create a Slack app」をクリックします。

前述のLINEでもそうでしたが、Slack、Discordにメッセージを送るということは、いずれの場合も、こちらのプログラム(PythonじゃなくてもOK)から各サービスの受信用URLにHTTPリクエストを送信し、リクエストを受信したサービス側で自動的にそれぞれのアプリの形式でメッセージ通知してくれるという処理の流れになります。

SlackにPythonでメッセージ、通知を送るサンプルコード

def slack_notify(url, message):
    """
    Slack send message.

    Args:
        url (str): slack incoming-webhook url.
        message (str): message.
    """
    if url:
        requests.post(url,
                      data=json.dumps({'text': message}))

slack_notifyメソッドでSlackにメッセージを送信します。引数1には、slack incoming-webhookで取得したURL、引数2には、送信するメッセージを設定します。

「if url」でurlが設定されているかを判定しています。
「requests.post」メソッドで、slack incoming-webhookのURLにHTTPリクエスト(POST)を送信します。urlにslack incoming-webhookを設定し、dataにはJSON形式でメッセージを設定しています。


DiscordにPythonでメッセージ、通知を送る

Discordにメッセージを送るには、Discord webhookを利用します。

Discordのwebhookを利用するには、チャンネルの編集からWebhookの設定を行います。

DiscordにPythonでメッセージ、通知を送るサンプルコード

def discord_notify(url, message):
    """
    Discord send message.

    Args:
        url (str): discord webhook url.
        message (str): message.
    """
    if url:
        requests.post(url,
                      data={'content': message})

discord_notifyメソッドでDiscordにメッセージを送信します。引数1には、discord webhookで取得したURL、引数2には、送信するメッセージを設定します。

「if url」でurlが設定されているかを判定しています。
「requests.post」メソッドで、discord webhookのURLにHTTPリクエスト(POST)を送信します。urlにdiscord webhookを設定し、dataにはJSON形式でメッセージを設定しています。

正規表現で文字列を含む行、文字列を含まない行を選択、置換する(vscode、サクラエディタ)

テキストエディタでよく利用するテクニックの一つです。

正規表現で文字列を含む行、文字列を含まない行を選択、置換する

logなど、長いテキストから任意の文字列を含む行を選択する正規表現と、それとは逆に、文字列を含まない行を選択する正規表現のサンプルになります。

正規表現は、VSCode、ATOM、SublimeTextからサクラエディタまで、よく利用されるエディタでは、基本的にサポートしている機能です。

今回はエディタに、VSCodeを利用します。

コピー用一覧

内容 正規表現
文字列を含む行を検索.*文字列.*
文字列を含む行を削除(置換)(LF).*文字列.*\n
文字列を含まない行を検索^(?!.*文字列).*
文字列を含まない行を削除(置換)(LF)^(?!.*文字列).*\n

※サクラエディタなどでShift-JISのファイルを扱っている場合は、上記“\n”(LF)を“\r\n”(CRLF)に置き換えます

その他の正規表現の基本的な書き方はこちらをご覧ください。

以下、各正規表現の使用例です。

正規表現で文字列を含む行を検索する

正規表現 文字列を含む行を検索するコマンド

.*文字列.*

VScodeでは「Ctrl」+「F」で検索のウインドウが表示されます。

また、正規表現を利用するには正規表現を有効にする必要があります。VSCodeの場合、検索ウインドウが表示されている状態で「Alt」+「R」を押すか、検索ウインドウの右側にある「Use Ragular Expression」ボタンを押します。

画像は、VSCodeで”「あい」を含む行”を検索しています。

正規表現 文字列を含む行を削除(置換)するコマンド(LF)

.*文字列.*\n

一部の条件に当てはまる行を削除したい時に利用します。私の場合、logから共通フレームワークなどの特定のアプリケーションのログのみ削除したい場合などに利用しています。

VScodeでは「Ctrl」+「H」で置換(Replace)のウインドウが表示されます。

画像は、VSCodeで「あい」を含む行を削除(ブランク(空白)に置換)しています。

※改行コードは「\n」で指定します。

正規表現 文字列を含む行を削除するコマンド(CRLF)

.*文字列.*\r\n

さくらエディタでは、デフォルトで改行コードがCRLFとなっており、「\r\n」となります。

では、続いて逆の文字列を含まない行の選択を行います。

正規表現で文字列を含まない行を選択する

正規表現 文字列を含まない行を検索するコマンド

^(?!.*文字列).*

VScodeでは「Ctrl」+「F」で検索のウインドウが表示されます。

画像は、VSCodeで「あい」を含まない行を検索しています。

正規表現 文字列を含まない行を削除(置換)するコマンド(LF)

^(?!.*文字列).*\n

一部の条件に当てはまらない行を削除したい時に利用します。私の場合、logから特定のアプリケーションのログのみ残したい場合などに利用しています。

VScodeでは「Ctrl」+「H」で置換(Replace)のウインドウが表示されます。

画像は、VSCodeで「あい」を含まない行を削除(ブランク(空白)に置換)しています。

※改行コードは「\n」で指定します。

正規表現 文字列を含まない行を削除するコマンド(CRLF)

^(?!.*文字列).*\r\n

さくらエディタでは、デフォルトで改行コードがCRLFとなっており、「\r\n」となります。


正規表現 解説

正規表現で文字列を含む行を検索する場合、「.*文字列.*」を指定しました。

「.」(ドット)は、1文字で何が入ってもOK(ヒットする)という意味です。

「*」(アスタリスク)は、直前の要素の繰り返し(0回含む)という意味です。

「.*」は、1つの文字が0回以上あれば、ということになります。

したがって、「.*文字列.*」を指定した場合、「文字列」の前後に何か入力がある行が対象となります。

文字列を含まない行を検索する場合、「^(?!.*文字列).*」を指定しました。

「^」(キャレット または チルダ)は、行の先頭を意味します。

「(?!XXX)」は、カッコ()内のXXXが含まれていないという意味です。

したがって、「^(?!.*文字列).*」を指定した場合、先頭からみて「文字列」が含まれていない場合、行が対象となります。