Help us understand the problem. What is going on with this article?

Azure FunctionsでPython3とpipを使う

More than 1 year has passed since last update.

こんにちは。10分で生産的なミーティングができるWeb会議ツール「minmeeting」を開発している伊勢川です。

Microsoft AzureのFunctionsは、AmazonのLambdaやGoogleのCloud Functionsと同じく、サーバーレスでクラウド上でプログラムが実行できるサービスです。サーバーレスのため、自分でインフラを設計・構築する必要がなく、負荷に応じて自動でスケールイン・アウトをしてくれるため、インフラレイヤーのことはほとんど気にする必要がありません

また、AmazonやGoogleのサービスと比べて、ブラウザ上の開発ツールが充実しているのが特徴で、自分のPC上に開発環境が一切なくても、ブラウザさえあれば、開発することができます

Azure Functionsでは、機械学習などで非常に人気の言語Pythonを使うことができます。デフォルトではPythonのバージョンは2.7.8ですが、日本語を扱う際に面倒なことが多いため、Python3系に切り替える方法を紹介します。また、pipを使って外部のライブラリをインストールする方法を紹介します。

Azure Functions(Python用)を作成する

ダッシュボード左側から、Function Appを作成する。
CreateFunctionApp.png

App nameを入力して、サーバーのLocationを日本にしておきます。
EnterNameAndSelectLocation.png

Functions横の+ボタンを押して、Custom functionを選択します。
AddFunction.png

LanguageはPythonを選択し、HttpTriggerを選択肢、Function名称を入力します。
スクリーンショット 2017-10-07 20.07.19.png

Functionの作成が完了すると、下記のようなコーディング画面がでてきます。ここからPythonのアプリを開発することができます。
スクリーンショット 2017-10-07 21.00.55.png

HttpTriggerのため、HttpのリクエストがPOSTされると、このコードが実行されます。このコードを実行するためのURLは、画面右上の「</>Get function URL」から取得することができます。また、上のRUNボタンを押すとテストリクエストを投げて、このコードを実行することができます。実行ログは画面下の方に出力されます。

Python3をインストールする

次にPython3をインストールする手順を紹介します。

まずは、ブラウザでKuduという画面を開きます。KuduはCMDやPowerShellのコマンドを実行することができるツールです。

https://YOUR_APP_NAME.scm.azurewebsites.net/DebugConsole

ここでいうYOUR_APP_NAMEは下記の画面から調べることができます。
スクリーンショット 2017-10-07 21.09.48.png

Kuduにアクセスすると、下記のような画面がでてきて、下の黒い画面には、Windowsのコマンドプロンプトと同様にコマンドを打つことができます。
スクリーンショット 2017-10-07 21.12.32.png

下記のコマンドでsite\toolsの下に移動し、python3をインストールします。

cd D:\home\site\tools
nuget.exe install -Source https://www.siteextensions.net/api/v2/ -OutputDirectory D:\home\site\tools python361x64

インストールしたpython3をFunctionsで実行できる場所に移動します。

mv /d/home/site/tools/python361x64.3.6.1.3/content/python361x64/* /d/home/site/tools/

Azure Functionsの開発画面に戻り、下記のコードを実行すると、ログにpythonのバージョンが出力されます。

import platform
print("Python '{0}'".format(platform.python_version()))  

スクリーンショット 2017-10-07 20.31.40.png

スクリーンショット 2017-10-07 20.32.25.png
上記のように、「Python '3.6.1'」と表示されれば成功です。

pipでライブラリをインストールする

pipを使うには上記のpythonのインストールを予め行っておく必要があります。上記のインストールが終わったら、再びKuduのDebugConsoleの画面に移動します。

https://YOUR_APP_NAME.scm.azurewebsites.net/DebugConsole

pipコマンド

コマンドプロンプトにて、下記のようなコマンドを打つと、pipにて外部のライブラリをインストールすることができます。下記はrequestsをインストールする例です。

D:\home\site\tools\python.exe -m pip install requests

pip -r コマンド

KuduのDebugConsole画面左上のプラスボタンからファイルを追加することができるため、pip -rコマンドを使うこともできます。

スクリーンショット 2017-10-07 21.24.35.png

スクリーンショット 2017-10-07 21.26.10.png

requirements.txtを保存したら、コマンドプロンプトから下記のコマンドを打つと、必要なライブラリを一括でインストールできます。

D:\home\site\tools\python.exe -m pip install -r requirements.txt 

たまにエラーになるものもありますが、TensorFlowやgoogle-cloudやWatsonのSDKなどの他のクラウドベンダーのSDKなどもわりと寛容にインストールできるようです。

以上、Azure FunctionsでPython3とpipを使う方法のご紹介でした。

参考資料

https://prmadi.com/running-python-code-on-azure-functions-app/
https://github.com/DreamArtsChiwawa/APIGuides/blob/master/document/CreateBotWithPythonOnAzureFunctions.md

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away