Python アプリケーションは通常、フォルダーとファイルのみを使用して定義されます。 アプリケーションが成長し、自動生成されたファイルや Web アプリケーション用の JavaScript などが含まれると、この構造が複雑になる可能性があります。
Visual Studio プロジェクトは、複雑さを管理するのに役立ちます。 プロジェクト ( .pyproj ファイル) は、プロジェクトに関連付けられているすべてのソース ファイルとコンテンツ ファイルを識別します。 各ファイルのビルド情報が含まれており、ソース管理システムと統合するための情報が保持され、アプリケーションを論理コンポーネントに整理するのに役立ちます。
プロジェクトは常に Visual Studio ソリューション内で管理されます。 ソリューションには、拡張モジュールを実装する C++ プロジェクトを参照する Python プロジェクトなど、相互に参照する可能性のある任意の数のプロジェクトを含めることができます。 このリレーションシップにより、Python プロジェクトのデバッグを開始すると、Visual Studio によって C++ プロジェクトが (必要に応じて) 自動的にビルドされます。 詳細については、「 Visual Studio のソリューションとプロジェクト」を参照してください。
Visual Studio には、さまざまな種類のアプリケーション構造をすばやく作成するためのさまざまな Python プロジェクト テンプレートが用意されています。 既存のフォルダー ツリーからプロジェクトを作成するテンプレートを選択するか、クリーンで空のプロジェクトを作成できます。 使用可能なテンプレートの一覧については、「 プロジェクト テンプレート 」セクションの表を参照してください。
Python プロジェクトを操作するためのヒント
Visual Studio で Python コードを実行するためにプロジェクトを使用する必要はありませんが、実行する利点があります。 作業を開始するときに、プロジェクトと Python の操作に関する次の考慮事項を確認してください。
Visual Studio 2019 以降では、Python コードを含むフォルダーを開き、Visual Studio のプロジェクト ファイルとソリューション ファイルを作成せずにコードを実行できます。
この方法のガイド付き手順については、「 クイック スタート: フォルダー内で Python コードを開いて実行する 」の記事を参照してください。
Visual Studio で Python コードを実行するためにプロジェクトは必要ありません。 すべてのバージョンの Visual Studio は Python コードで適切に動作します。
Python ファイルを単独で開き、オートコンプリート、IntelliSense、デバッグ機能にすぐにアクセスできます。 ただし、プロジェクトなしでコードを操作するには、いくつかの潜在的な欠点があります。
- コードでは常に既定のグローバル環境が使用されるため、コードが別の環境用である場合は、正しくない入力候補またはエラーが表示される可能性があります。
- Visual Studio は、1 つのファイルを開いたフォルダー内のすべてのファイルとパッケージを分析します。 このプロセスでは、かなりの CPU 時間が消費される可能性があります。
既存のコードから Visual Studio プロジェクトを作成できます。 この方法については、「既存の ファイルからプロジェクトを作成する 」セクションで説明されています。
基本的なプロジェクト タスク: ファイル、環境、起動
Python コードでプロジェクトを使用する場合は、ファイルの追加、スタートアップ ファイルの割り当て、Python インタープリター環境の設定など、基本的なタスクを完了します。
アプリケーションを開発するときは、通常、さまざまな種類の新しいファイルをプロジェクトに追加する必要があります。 より多くのファイルを簡単に追加できます。 プロジェクトを右クリックし、[ 追加>Existing Item] を選択し、参照して追加するファイルの種類を見つけます。 [追加>新しいアイテム] オプションを選択すると、新しいファイルの作成に使用できる項目テンプレートを表示するダイアログが開きます。 オプションには、空の Python ファイル、Python クラス、単体テスト、Web アプリケーションに関連するさまざまなファイルが含まれます。 テスト プロジェクトでテンプレート オプションを調べて、ご利用のバージョンの Visual Studio で利用できる内容を確認できます。 詳細については、 項目テンプレートリファレンスを 参照してください。
各 Python プロジェクトには、割り当てられたスタートアップ ファイルが 1 つあり、 ソリューション エクスプローラーの太字で示されています。 スタートアップ ファイルは、デバッグを開始するときに (F5 キーまたはデバッグを選択して>デバッグの開始)、または [対話型] ウィンドウでプロジェクトを実行するときに実行されます。 このウィンドウを開くには、キーボード ショートカット Shift + Alt + F5 キーを押すか、Python Interactive で [デバッグ>プロジェクトの実行] を選択します。 スタートアップ ファイルを変更するには、使用するファイルを右クリックし、[ スタートアップ項目として設定] (または、以前のバージョンの Visual Studio で スタートアップ ファイルとして設定 ) を選択します。
選択したスタートアップ ファイルをプロジェクトから削除し、代替ファイルを選択しない場合、Visual Studio はプロジェクトの開始に使用する Python ファイルを認識しません。 この場合、Visual Studio 2017 バージョン 15.6 以降でエラーが表示されます。 以前のバージョンでは、Python インタープリターを実行して出力ウィンドウを開くか、出力ウィンドウが開いてすぐに閉じます。 これらの動作のいずれかが発生した場合は、スタートアップ ファイルが割り当てられていることを確認します。
ヒント
出力ウィンドウを開いたままにするには、プロジェクトを右クリックし、[ プロパティ] を選択します。 ダイアログで[デバッグ]タブを選択し、[-i]フィールドにフラグを追加します。 この引数を指定すると、プログラムの完了後にインタープリターが対話モードになります。 ウィンドウは、キーボード ショートカット Ctrl+E+Enter を使用して閉じるまで開いたままです。
新しいプロジェクトは、常に既定のグローバル Python 環境に関連付けられます。 プロジェクトを別の環境 (仮想環境を含む) に関連付けるには、プロジェクトの [Python 環境 ] ノードを右クリックします。 [ 環境の追加] を選択し、目的の環境を選択します。 ツール バーの環境ドロップダウン コントロールを使用して、環境を選択したり、別の環境をプロジェクトに追加したりすることもできます。
アクティブな環境を変更するには、 ソリューション エクスプローラー で目的の環境を右クリックし、次の図に示すように [環境のアクティブ化 ] を選択します。 詳細については、「 プロジェクトの環境を選択する」を参照してください。
プロジェクト テンプレート
Visual Studio では、Python プロジェクトをゼロから、または既存のコードから、さまざまな方法で設定できます。 テンプレートを使用するには、[ ファイル>新規作成>プロジェクト ] を選択するか、 ソリューション エクスプローラー でソリューションを右クリックし、[ 追加>新しいプロジェクト] を選択します。 新しいプロジェクト ダイアログでは、Python で検索するか、[言語Python ノードを選択すると、> 固有のテンプレートを表示できます。
Visual Studio バージョン 2022 では、次のテンプレートを使用できます。
| Template | Description |
|---|---|
| 既存の Python コードから | フォルダー構造内の既存の Python コードから Visual Studio プロジェクトを作成します。 |
| Python アプリケーション | 単一の空のソース ファイルを使用して、新しい Python アプリケーションの基本的なプロジェクト構造を提供します。 既定では、プロジェクトは既定のグローバル環境のコンソール インタープリターで実行されます。 別の環境の割り当てを変更できます。 |
| Web プロジェクト | Bottle、Django、Flask などのさまざまなフレームワークに基づく Web アプリのプロジェクト。 |
| バックグラウンド アプリケーション (IoT) | デバイスでバックグラウンド サービスとして実行する Python プロジェクトのデプロイをサポートします。 詳細については、 Windows IoT デベロッパー センターを参照してください。 |
| Python 拡張機能モジュール | このテンプレートは、Visual Studio 2017 以降で Python ワークロードを使用して Python ネイティブ開発ツール をインストールする場合に、Visual C++ の下に表示されます ( 「インストール」を参照)。 このテンプレートは、Python 用の C++ 拡張機能の作成に関するページで説明されている構造と同様に、 C++ 拡張 DLL のコア構造を提供します。 |
Visual Studio バージョン 2019 では、次のテンプレートを使用できます。 バージョン 2019 で使用できるテンプレートの一部が、以前のバージョンの Visual Studio で使用できるわけではありません。
| Template | Description |
|---|---|
| 既存の Python コードから | フォルダー構造内の既存の Python コードから Visual Studio プロジェクトを作成します。 |
| Python アプリケーション | 単一の空のソース ファイルを使用して、新しい Python アプリケーションの基本的なプロジェクト構造を提供します。 既定では、プロジェクトは既定のグローバル環境のコンソール インタープリターで実行されます。 別の環境の割り当てを変更できます。 |
| Web プロジェクト | Bottle、Django、Flask などのさまざまなフレームワークに基づく Web アプリのプロジェクト。 |
| バックグラウンド アプリケーション (IoT) | デバイスでバックグラウンド サービスとして実行する Python プロジェクトのデプロイをサポートします。 詳細については、 Windows IoT デベロッパー センターを参照してください。 |
| Python 拡張機能モジュール | このテンプレートは、Visual Studio 2017 以降で Python ワークロードを使用して Python ネイティブ開発ツール をインストールする場合に、Visual C++ の下に表示されます ( 「インストール」を参照)。 このテンプレートは、Python 用の C++ 拡張機能の作成に関するページで説明されている構造と同様に、 C++ 拡張 DLL のコア構造を提供します。 |
| IronPython アプリケーション | 既定では IronPython を使用し、.NET 言語での .NET 相互運用と混合モードデバッグを有効にします。 このテンプレートは Python アプリケーション テンプレートに似ています。 |
| IronPython WPF アプリケーション | アプリケーション ユーザー インターフェイス用の Windows Presentation Foundation XAML ファイルで IronPython を使用してプロジェクト構造を提供します。 Visual Studio には XAML UI デザイナーが用意されており、コード ビハインドは Python で記述でき、アプリケーションはコンソールを表示せずに実行されます。 |
| IronPython Silverlight Web ページ | Silverlight を使用してブラウザーで実行される IronPython プロジェクトを作成します。 アプリケーションの Python コードは、スクリプトとして Web ページに含まれています。 定型スクリプト タグによって JavaScript コードがプルダウンされ、Silverlight 内で実行されている IronPython が初期化され、そこから Python コードが DOM と対話できます。 |
| IronPython Windows フォーム アプリケーション | Windows フォームでコードを使用して作成された IronPython と UI を使用してプロジェクト構造を構築します。 アプリケーションはコンソールを表示せずに実行されます。 |
注
Python は解釈された言語であるため、Visual Studio の Python プロジェクトでは、C# などの他のコンパイル済み言語プロジェクトと同様にスタンドアロンの実行可能ファイルは生成されません。 詳細については、 質問と回答を参照してください。
既存のファイルからプロジェクトを作成する
既存のファイルからプロジェクトを作成するには、次の手順に従います。
Important
次のプロセスでは、元のソース ファイルは移動またはコピーされません。 ファイルのコピーを操作する場合は、まずフォルダーを複製してからプロジェクトを作成します。
Visual Studio を起動し、 ファイル>New>Project を選択します。
[ 新しいプロジェクトの作成 ] ダイアログで Python を検索し、[ 既存の Python コード テンプレートから ] を選択し、[ 次へ] を選択します。
[ 新しいプロジェクトの構成 ] ダイアログで、プロジェクト 名 と 場所を入力し、プロジェクトを含むソリューションを選択して、[ 作成] を選択します。
[既存の Python コードから新しいプロジェクトを作成する] ウィザードで、フォルダー パスを既存のコードに設定し、ファイルの種類のフィルターを設定し、プロジェクトに必要な検索パスを指定して、[次へ] を選択します。 検索パスがわからない場合は、フィールドを空白のままにします。
次のページで、プロジェクトの スタートアップ ファイル を選択します。 Visual Studio では、既定のグローバル Python インタープリターとバージョンが選択されます。 ドロップダウン メニューを使用して環境を変更できます。 準備ができたら、[ 次へ] を選択します。
注
ダイアログには、ルート フォルダー内のファイルのみが表示されます。 必要なファイルがサブフォルダーにある場合は、スタートアップ ファイルを空白のままにします。 後の手順で説明するように、 ソリューション エクスプローラーでスタートアップ ファイルを設定できます。
プロジェクト ファイル (ディスク上の .pyproj ファイル) を格納する場所を選択します。 該当する場合は、仮想環境の自動検出を含め、さまざまな Web フレームワーク用にプロジェクトをカスタマイズすることもできます。 これらのオプションがわからない場合は、フィールドを既定値のままにします。
完了 を選択します。
Visual Studio によってプロジェクトが作成され、 ソリューション エクスプローラーで開かれます。 .pyproj ファイルを別の場所に移動する場合は、ソリューション エクスプローラーでファイルを選択し、ツール バーの [ファイル>保存] を選択します。 この操作により、プロジェクト内のファイル参照が更新されますが、コード ファイルは移動されません。
別のスタートアップ ファイルを設定するには、 ソリューション エクスプローラーでファイルを見つけて、ファイルを右クリックし、[ スタートアップ ファイルとして設定] を選択します。
リンクされたファイル
リンク ファイルは、プロジェクトに取り込まれるが、通常はアプリケーションのプロジェクト フォルダーの外部に存在するファイルです。 これらのファイルは 、ソリューション エクスプローラー に通常のファイルとして表示され、重ね合わせのショートカット アイコンが表示されます。
リンク されたファイルは、.pyproj要素を使用して、<Compile Include="..."> ファイルで指定されます。 リンク ファイルは、ディレクトリ構造の外部で相対パスを使用する場合は 暗黙的 です。
ファイルでソリューション エクスプローラー内のパスを使用する場合、リンクされたファイルは明示的です。 次の例は、明示的にリンクされたファイルを示しています。
<Compile Include="..\test2.py">
<Link>MyProject\test2.py</Link>
</Compile>
リンク ファイルは、次の条件下では無視されます。
- リンクされたファイルには
Linkメタデータが含まれており、Include属性で指定されたパスはプロジェクト ディレクトリ内に存在します。 - リンクされたファイルは、プロジェクト階層内に存在するファイルを複製します。
- リンクファイルには
Linkメタデータが含まれており、Linkパスはプロジェクト階層外の相対パスです。 - リンク パスはルート化されています。
リンク ファイルを操作する
既存のアイテムをリンクとして追加するには、ファイルを追加するプロジェクト内のフォルダーを右クリックし、[ 追加>Existing Item] を選択します。 ダイアログでファイルを選択し、[追加]>[リンクとして追加]を選択します。 競合するファイルがない場合、このコマンドは選択したフォルダーにリンクを作成します。 ただし、同じ名前の既存のファイルがある場合、またはそのファイルへのリンクがプロジェクトに既に存在する場合、リンクは追加されません。
プロジェクト フォルダーに既に存在するファイルにリンクしようとすると、ファイルはリンクではなく通常のファイルとして追加されます。 ファイルをリンクに変換するには、[ ファイル>名前を付けて保存 ] を選択して、プロジェクト階層外の場所にファイルを保存します。 Visual Studio によって、ファイルがリンクに自動的に変換されます。 同様に、[ ファイル>名前を付けて保存 ] を使用して、プロジェクト階層内のどこかにファイルを保存することで、リンクを元に戻すことができます。
ソリューション エクスプローラーでリンク ファイルを移動すると、リンクは移動されますが、実際のファイルは影響を受けません。 同様に、リンクを削除すると、ファイルに影響を与えずにリンクが削除されます。
リンク ファイルの名前を変更することはできません。
References
Visual Studio プロジェクトでは、ソリューション エクスプローラーの [参照] ノードの下に表示されるプロジェクトと拡張機能への参照の追加がサポートされています。
拡張機能の参照は通常、プロジェクト間の依存関係を示し、デザイン時またはコンパイル時のリンク時に IntelliSense を提供するために使用されます。 Python プロジェクトも同様の方法で参照を使用しますが、Python の動的な性質により、主に設計時に IntelliSense を改善するために使用されます。 また、Microsoft Azure へのデプロイに使用して、他の依存関係をインストールすることもできます。
拡張機能モジュールを操作する
.pyd ファイルへの参照により、生成されたモジュールの IntelliSense が有効になります。 Visual Studio は、 .pyd ファイルを Python インタープリターに読み込み、その型と関数をイントロスペクトします。 また、Visual Studio では、関数のドキュメント文字列を解析して署名のヘルプを提供しようとします。
拡張機能モジュールがディスク上で更新されると、Visual Studio によってバックグラウンドでモジュールが再分析されます。 このアクションは実行時の動作には影響しませんが、一部の完了は分析が完了するまで使用できません。
また、モジュールを含むフォルダーに 検索パス を追加する必要がある場合もあります。
.NET プロジェクトを操作する
IronPython を使用する場合は、.NET アセンブリへの参照を追加して IntelliSense を有効にすることができます。 ソリューション内の .NET プロジェクトの場合は、Python プロジェクトの [参照 ] ノードを右クリックし、[ 参照の追加] を選択します。 ダイアログで[ プロジェクト ]タブを選択し、目的のプロジェクトを参照します。 個別にダウンロードした DLL の場合は、代わりに [ 参照 ] タブを選択し、目的の DLL を参照します。
IronPython の参照は、 clr.AddReference('<AssemblyName>') メソッドの呼び出し後まで使用できないため、アセンブリに適切な clr.AddReference メソッド呼び出しを追加する必要もあります。 通常、この呼び出しはコードの先頭に追加されます。 たとえば、Visual Studio の IronPython Windows フォーム アプリケーション (Visual Studio 2019 で使用可能) プロジェクト テンプレートによって作成されたコードには、ファイルの先頭に次の 2 つの呼び出しが含まれています。
import clr
clr.AddReference('System.Drawing')
clr.AddReference('System.Windows.Forms')
from System.Drawing import *
from System.Windows.Forms import *
# Other code omitted
WebPI プロジェクトを操作する
Microsoft Azure Cloud Services にデプロイするための Web Platform Installer (WebPI) 製品エントリへの参照を追加し、WebPI フィードを介してさらにコンポーネントをインストールできます。 既定では、表示されるフィードは Python 固有であり、Django、CPython、およびその他のコア コンポーネントが含まれます。 次の図に示すように、独自のフィードを選択することもできます。 Microsoft Azure に発行すると、セットアップ タスクによって参照されているすべての製品がインストールされます。
Important
WebPI プロジェクトは、Visual Studio 2017 または Visual Studio 2019 では使用できません。