Python Web プロジェクト テンプレートPython Web Project Templates

Visual Studio の Python は、さまざまなフレームワークを処理するように構成できるプロジェクト テンプレートとデバッグ ランチャーにより、Bottle、Flask、Django などのフレームワークでの Web プロジェクトの開発をサポートします。Python in Visual Studio supports developing web projects in Bottle, Flask, and Django frameworks through project templates and a debug launcher that can be configured to handle various frameworks. Pyramid などの他のフレームワークには、汎用の "Web プロジェクト" テンプレートを使用できます。You can also use the generic "Web Project" template for other frameworks such as Pyramid.

Visual Studio には、フレームワーク自体は含まれません。Visual Studio does not include the frameworks themselves. プロジェクトを右クリックして [Python] > [Install/upgrade framework...](フレームワークのインストール/アップグレード...) を選択して別途フレームワークをインストールする必要があります。You must install frameworks separately by right-clicking the project and selecting Python > Install/upgrade framework....

実行すると、テンプレートから作成されたプロジェクト ([ファイル] > [新規] > [プロジェクト] からアクセス) は、ランダムに選ばれたローカル ポートで Web サーバーを起動し、デバッグ時に既定のブラウザーを開き、Microsoft Azure に直接発行できるようにします。When run, a project created from a template (as accessed through File > New > Project...) launches a web server with a randomly selected local port, opens your default browser when debugging, and allows direct publishing to Microsoft Azure.

新しい Web プロジェクト テンプレート

Bottle、Flask、Django の各テンプレートには、いくつかのページと静的ファイルがあるスターター サイトが含まれます。The Bottle, Flask, and Django templates each include a starter site with some pages and static files. このコードは、サーバーをローカルに実行およびデバッグするため (一部の設定は環境から取得する必要があります)、また Microsoft Azure にデプロイするため (WSGI アプリ オブジェクトを提供する必要があります) に十分です。This code is sufficient to run and debug the server locally (where some settings need to be obtained from the environment) and to deploy to Microsoft Azure (where a WSGI app object needs to be provided).

フレームワーク固有のテンプレートからプロジェクトを作成する場合、pip を使用して必要なパッケージをインストールするためのダイアログが表示されます。When creating a project from a framework-specific template, a dialog appears to help you install the necessary packages using pip. Web プロジェクトの仮想環境を使用して、Web サイトのパブリッシュ時に正しい依存関係が含まれるようにすることもお勧めします。We also recommend using a virtual environment for web projects so that the correct dependencies are included when you publish your web site:

プロジェクト テンプレートに必要なパッケージをインストールするダイアログ

Microsoft Azure App Service にデプロイする場合は、Python のバージョンとしてサイト拡張機能を選び、パッケージを手動でインストールします。When deploying to Microsoft Azure App Service, select a version of Python as a site extension and manually install packages. また、Azure App Service は、Visual Studio からデプロイされるときに requirements.txt ファイルからパッケージを自動的にインストールしないため、aka.ms/PythonOnAppService の構成の詳細に従ってください。Also, because Azure App Service does not automatically install packages from a requirements.txt file when deployed from Visual Studio, follow the configuration details on aka.ms/PythonOnAppService.

Microsoft Azure クラウド サービスは requirements.txt ファイルをサポート "します"。Microsoft Azure Cloud Service does support the requirements.txt file. 詳しくは、Azure クラウド サービス プロジェクトに関する記事をご覧ください。Azure Cloud Service Projects for details.

デバッグDebugging

Web プロジェクトのデバッグが開始されると、Visual Studio は Web サーバーをローカルで起動し、そのアドレスとポートを既定のブラウザーで開きます。When a web project is started for debugging, Visual Studio starts the web server locally and opens your default browser to that address and port. 追加のオプションを指定するには、プロジェクトを右クリックし、[プロパティ] を選択し、[Web ランチャー] タブを選択します。To specify additional options, right-click the project, select Properties, and select the Web Launcher tab:

一般的な Web テンプレートの Web ランチャーのプロパティ

[デバッグ] グループで、次の操作を実行します。In the Debug group:

  • [検索パス][スクリプトの引数][インタープリターの引数][インタープリター パス]: これらのオプションは、通常のデバッグの場合と同じですSearch Paths, Script Arguments, Interpreter Arguments, and Interpreter Path: these options are the same as for normal debugging
  • [起動 URL]: ブラウザーで開かれる URL を指定します。Launch URL: specifies the URL that is opened in your browser. 既定値は localhost です。It defaults to localhost.
  • [ポート番号]: URL に何も指定されなかった場合に使用するポート (Visual Studio によって既定で自動的に選択されます)。Port Number: the port to use if none is specified in the URL (Visual Studio selects one automatically by default). この設定により、ローカル デバッグ サーバーがリッスンするポートを構成するためにテンプレートで使用される SERVER_PORT 環境変数の既定値を上書きできます。This setting allows you to override the default value of the SERVER_PORT environment variable, which is used by the templates to configure the port the local debug server listens on.

[Run Server Command (サーバー コマンドの実行)][Debug Server Command (サーバー コマンドのデバッグ)] グループ (後者はイメージに表示されている内容の下にあります) のプロパティによって、Web サーバーの起動方法が決定されます。The properties in the Run Server Command and Debug Server Command groups (the latter is below what's show in the image) determine how the web server is launched. 多くのフレームワークでは、現在のプロジェクトの外部のスクリプトを使用する必要があるため、スクリプトをここで構成でき、スタートアップ モジュールの名前をパラメーターとして渡すことができます。Because many frameworks require the use of a script outside of the current project, the script can be configured here and the name of the startup module can be passed as a parameter.

  • [コマンド]: Python スクリプト (*.py ファイル)、モジュール名 (python.exe -m module_name など)、または 1 行のコード (python.exe -c "code" など) にすることができます。Command: can be a Python script (*.py file), a module name (as in, python.exe -m module_name), or a single line of code (as in, python.exe -c "code"). ドロップダウンの値は、これらの種類のどれが対象であるかを示します。The value in the dropdown indicates which of these types is intended.
  • [引数]: これらの引数は、コマンド ラインでコマンドに続いて渡されます。Arguments: these arguments are passed on the command line following the command.
  • [環境]: 環境変数を指定する NAME=VALUE ペアの改行区切りリスト。Environment: a newline-separated list of NAME=VALUE pairs specifying environment variables. これらの変数は、ポート番号や検索パスなど、環境を変更できるすべてのプロパティの後に設定されるため、これらの値を上書きできます。These variables are set after all properties that may modify the environment, such as the port number and search paths, and so may overwrite these values.

MSBuild 構文を使用して任意のプロジェクト プロパティまたは環境変数を指定できます。例: $(StartupFile) --port $(SERVER_PORT)Any project property or environment variable can be specified with MSBuild syntax, for example: $(StartupFile) --port $(SERVER_PORT). $(StartupFile) はスタートアップ ファイルの相対パスで、{StartupModule} はスタートアップ ファイルのインポート可能な名前です。$(StartupFile) is the relative path to the startup file and {StartupModule} is the importable name of the startup file. $(SERVER_HOST)$(SERVER_PORT) は、[起動 URL] プロパティと [ポート番号] プロパティによって自動的に設定されるか、[環境] プロパティによって設定される通常の環境変数です。$(SERVER_HOST) and $(SERVER_PORT) are normal environment variables that are set by the Launch URL and Port Number properties, automatically, or by the Environment property.

注意

[Run Server Command (サーバー コマンドの実行)] の値は、[デバッグ] > [サーバーを起動します] コマンドまたは Ctrl+F5 で使用されます。[Debug Server Command (サーバー コマンドのデバッグ)] グループは、[デバッグ] > [Start Debug Server (デバッグ サーバーの起動)] コマンドまたは F5 キーをで使用されます。Values in Run Server Command are used with the Debug > Start Server command or Ctrl-F5; values in the Debug Server Command group are used with the Debug > Start Debug Server command or F5.

サンプルの Bottle 構成Sample Bottle configuration

Bottle Web プロジェクト テンプレートには、必要な構成を実行する定型コードが含まれています。The Bottle Web Project template includes boilerplate code that does the necessary configuration. ただし、インポートされた bottle アプリにはこのコードが含まれていない場合があります、その場合、次の設定はインストールされた bottle モジュールを使用してアプリを起動します。An imported bottle app may not include this code, however, in which case the following settings launch the app using the installed bottle module:

  • [Run Server Command (サーバー コマンドの実行)] グループ:Run Server Command group:

    • [コマンド]: bottle (モジュール)Command: bottle (module)
    • [引数]: --bind=%SERVER_HOST%:%SERVER_PORT% {StartupModule}:appArguments: --bind=%SERVER_HOST%:%SERVER_PORT% {StartupModule}:app
  • [Debug Server Command (サーバー コマンドのデバッグ)] グループ:Debug Server Command group:

    • [コマンド]: bottle (モジュール)Command: bottle (module)
    • [引数] --debug --bind=%SERVER_HOST%:%SERVER_PORT% {StartupModule}:appArguments --debug --bind=%SERVER_HOST%:%SERVER_PORT% {StartupModule}:app

デバッグに Visual Studio を使用する場合、--reload オプションはお勧めしません。The --reload option is not recommended when using Visual Studio for debugging.

サンプルの Pyramid 構成Sample Pyramid configuration

Pyramid アプリは、現在、pcreate コマンドライン ツールを使用して作成するのが最適です。Pyramid apps are currently best created using the pcreate command-line tool. アプリが作成されたら、From Existing Python Code (既存の Python コードから) テンプレートを使用してインポートできます。Once an app has been created, it can be imported using the From Existing Python Code template. その後、[汎用 Web プロジェクト] カスタマイズを選択してオプションを構成します。After doing so, select the Generic Web Project customization to configure the options. これらの設定は、Pyramid が ..\env にある仮想環境にインストールされていることを想定しています。These settings assume that Pyramid is installed into a virtual environment at ..\env.

  • [デバッグ] グループ:Debug group:

    • [サーバー ポート]: 6543 (または .ini ファイルで構成されているポート)Server Port: 6543 (or whatever is configured in the .ini files)
  • [Run Server Command (サーバー コマンドの実行)] グループ:Run Server Command group:

    • [コマンド]: ..\env\scripts\pserve-script.py (スクリプト)Command: ..\env\scripts\pserve-script.py (script)
    • [引数]: Production.iniArguments: Production.ini
  • [Debug Server Command (サーバー コマンドのデバッグ)] グループ:Debug Server Command group:

    • [コマンド]: ..\env\scripts\pserve-script.py (スクリプト)Command: ..\env\scripts\pserve-script.py (script)
    • [引数]: Development.iniArguments: Development.ini

ヒント

Pyramid アプリは通常はソース ツリーの最上部より 1 ディレクトリ レベル深いため、プロジェクトの [作業ディレクトリ] プロパティを構成することが必要な場合があります。You'll likely need to configure the Working Directory property of your project because Pyramid apps are typically one directory level deeper than the top of the source tree.

その他の構成Other configurations

別のフレームワークの設定を共有する場合、または別のフレームワークの設定を要求する場合は、GitHub で懸案事項を開きます。If you have settings for another framework that you would like to share, or if you'd like to request settings for another framework, open an issue on GitHub.

Azure App Service への発行Publishing to Azure App Service

Azure App Service に発行する主な方法は 2 つあります。There are two primary ways to publish to Azure App Service. まず、ソース管理からのデプロイは、Azure ドキュメントで説明しているように、他の言語と同じ方法で使用できます。First, deployment from source control can be used in the same way as for other languages, as described in the Azure documentation. Visual Studio から直接発行するには、プロジェクトを右クリックして [発行] を選択します。To publish direct from Visual Studio, right-click the project and select Publish:

プロジェクトのコンテキスト メニューの [発行] コマンド

コマンドを選択した後、ウィザードの指示に従って Web サイトを作成するか発行の設定をインポートし、変更したファイルのプレビューを表示して、リモート サーバーに発行します。After selecting the command, a wizard walks you through creating a web site or importing publish settings, previewing modified files, and publishing to a remote server.

App Service にサイトを作成する場合は、Python と、サイトが依存するパッケージをインストールする必要があります。When you create a site on App Service, you need to install Python and any packages your site depends upon. 最初にサイトを発行することもできますが、Python を構成するまでは実行されません。You can publish your site first, but it won't run until you have configured Python.

App Service に Python をインストールするには、サイト拡張機能 (siteextensions.net) の使用をお勧めします。To install Python on App Service, we recommend using the site extensions (siteextensions.net). これらの拡張機能は、Python の公式リリースのコピーで、Azure App Service 用に最適化されて再パッケージ化されています。These extensions are copies of the official releases of Python, optimized and repackaged for Azure App Service.

サイト拡張機能は、Azure Portal でデプロイできます。A site extension can be deployed through the Azure portal. App Service の [開発ツール] > [拡張機能] ブレードを選び、[追加] を選んで、一覧をスクロールして Python の項目を見つけます。Select the Development Tools > Extensions blade for your App Service, select Add, and scroll the list to find the Python items:

Azure Portal へのサイト拡張機能の追加

JSON デプロイ テンプレートを使用している場合は、サイトのリソースとしてサイト拡張機能を指定できます。If you are using JSON deployment templates, you can specify the site extension as a resource of your site:

{
    "resources": [
    {
        "apiVersion": "2015-08-01",
        "name": "[parameters('siteName')]",
        "type": "Microsoft.Web/sites",
        ...
    },
    "resources": [
    {
        "apiVersion": "2015-08-01",
        "name": "python352x64",
        "type": "siteextensions",
        "properties": { },
        "dependsOn": [
            "[resourceId('Microsoft.Web/sites', parameters('siteName'))]"
        ]
    },
    ...
}

最後に、開発コンソールにログインし、そこからサイト拡張機能をインストールできます。Finally, you can log in through the development console and install a site extension from there.

現時点では、パッケージをインストールするお勧めの方法は、サイト拡張機能をインストールして pip を直接実行した後に開発コンソールを使用することです。Currently, the recommended way to install packages is to use the development console after installing the site extension and executing pip directly. Python の完全なパスを使用することが重要で、そうしないと間違ったものが実行されることがあります。一般に、仮想環境を使用する必要はありません。Using the full path to Python is important, or you may execute the wrong one, and there is generally no need to use a virtual environment. 例:For example:

c:\Python35\python.exe -m pip install -r D:\home\site\wwwroot\requirements.txt

c:\Python27\python.exe -m pip install -r D:\home\site\wwwroot\requirements.txt

Azure App Service にデプロイされた場合、サイトは Microsoft IIS の背後で実行されます。When deployed to Azure App Service, your site runs behind Microsoft IIS. サイトを IIS と連携できるようにするには、少なくとも web.config ファイルを追加する必要があります。To enable your site to work with IIS, you need to add at least a web.config file. いくつかの一般的なデプロイ ターゲットに対して利用可能なテンプレートがあります。これは、プロジェクトを右クリックし、[追加] > [新しい項目...] を選択することで使用可能で(下のダイアログを参照)、これらの構成は他で使用するために簡単に変更できます。There are templates available for some common deployment targets available by right-clicking the project and selecting Add > New Item... (see dialog below), and these configurations can be easily modified for other uses. 使用可能な構成設定について詳しくは、「IIS Configuration Reference」(IIS 構成リファレンス) をご覧ください。See the IIS Configuration Reference for information about the available configuration settings.

Azure 項目テンプレート

使用可能な項目を以下に示します。The available items include:

  • [Azure web.config (FastCGI)]: アプリが着信接続を処理する WSGI オブジェクトを提供する場合の web.config ファイルを追加します。Azure web.config (FastCGI): adds a web.config file for when your app provides a WSGI object to handle incoming connections.
  • [Azure web.config (HttpPlatformHandler)]: アプリが着信接続をソケットでリッスンする場合の web.config ファイルを追加します。Azure web.config (HttpPlatformHandler): adds a web.config file for when your app listens on a socket for incoming connections.
  • [Azure 静的ファイルの web.config]: 上記のいずれかの web.config ファイルがある場合は、そのファイルをサブディレクトリに追加して、アプリで処理されないようにします。Azure Static files web.config: when you have one of the above web.config files, add the file to a subdirectory to exclude it from being handled by your app.
  • [Azure Remote debugging web.config (Azure リモート デバッグ web.config)]: WebSocket 経由でのリモート デバッグに必要なファイルを追加します。Azure Remote debugging web.config: adds the files necessary for remote debugging over WebSockets.
  • [Web Role Support Files (Web ロールのサポート ファイル)]: クラウド サービス Web ロールの既定のデプロイ スクリプトが含まれます。Web Role Support Files: contains the default deployment scripts for Cloud Service web roles.
  • [Worker Role Support Files (worker ロールのサポート ファイル)]: クラウド サービス worker ロールの既定のデプロイ スクリプトと起動スクリプトが含まれます。Worker Role Support Files: contains the default deployment and launch scripts for Cloud Service worker roles.

デバッグ web.config テンプレートをプロジェクトに追加し、Python リモート デバッグを使用する計画がある場合は、"デバッグ" 構成でサイトを発行する必要があります。If you add the debugging web.config template to your project and plan to use Python remote debugging, you need to publish the site in "Debug" configuration. この設定は、現在アクティブなソリューション構成とは別であり、常に既定で "リリース" になります。This setting is separate from the current active solution configuration and always defaults to "Release." これを変更するには、[設定] タブを開き、発行ウィザードの [構成] コンボ ボックスを使用します (作成と Azure Web Apps へのデプロイについて詳しくは、Azure ドキュメントをご覧ください)。To change it, open the Settings tab and use the Configuration combo box in the publish wizard (see the Azure documentation for more information on creating and deploying to Azure Web Apps):

発行構成の変更

[Microsoft Azure クラウド サービス プロジェクトに変換] コマンド (下図) は、クラウド サービス プロジェクトをソリューションに追加します。The Convert to Microsoft Azure Cloud Service Project command (image below) adds a Cloud Service project to your solution. このプロジェクトには、使用する仮想マシンとサービスのデプロイ設定と構成が含まれています。This project includes the deployment settings and configuration for the virtual machines and services to be used. クラウド プロジェクトで [発行] コマンドを使用して、クラウド サービスにデプロイします。Python プロジェクトの [発行] コマンドでは、引き続き Web サイトにデプロイされます。Use the Publish command on the cloud project to deploy to Cloud Service; the Publish command on the Python project still deploys to Web Sites. 詳しくは、Azure クラウド サービス プロジェクトに関する記事をご覧ください。See Azure Cloud Service Projects for more details.

[Microsoft Azure クラウド サービス プロジェクトに変換]コマンド