Python プロジェクトPython Projects

通常、Python アプリケーションはフォルダーとファイルのみを使って定義されますが、アプリケーションが大きくなり、おそらく自動生成されたファイル、Web アプリケーション用 JavaScript などが含まれるようになると、この構造は複雑になる可能性があります。Python applications are typically defined using only folders and files, but this structure can become complex as applications become larger and perhaps involve auto-generated files, JavaScript for web applications, and so on. このような複雑さを管理しやすくするには、Python アプリケーション用の Visual Studio プロジェクトを作成できます。To help manage this complexity, you can create Visual Studio projects for Python applications. Python プロジェクト (.pyproj ファイル) には、プロジェクトに関連付けられたすべてのソース ファイルとコンテンツ ファイルの識別、各ファイルのビルド情報の格納、ソース管理システムと統合するための情報の保持、論理コンポーネントへのアプリケーションの整理の補助などの機能があります。A Python project (a .pyproj file) identifies all the source and content files associated with your project, contains build information for each file, maintains the information to integrate with source-control systems, and helps you organize your application into logical components.

さらに、プロジェクトは常に Visual Studio のソリューション内で管理され、ソリューションは相互に参照する可能性のある任意の数のプロジェクトを含むことができます。In addition, projects are always managed within a Visual Studio solution, which can contain any number of projects that might reference one another. たとえば、Python プロジェクトは拡張モジュール用に C++ プロジェクトを参照でき、それにより、Python プロジェクトのデバッグを開始するとき、Visual Studio は (必要な場合) C++ プロジェクトを自動的にビルドしますFor example, a Python project can reference a C++ project for an extension module, such that Visual Studio automatically builds the C++ project (if necessary) when you start debugging the Python project. (一般的な説明については、「Visual Studio のソリューションおよびプロジェクト」をご覧ください)。(For a general discussion, see Solutions and Projects in Visual Studio.)

ソリューション エクスプローラーでの Python プロジェクト

Visual Studio には、多数のアプリケーション構造を短時間で設定するためのさまざまな Python プロジェクト テンプレートが用意されており、既存のフォルダー ツリーからプロジェクトを作成するためのテンプレートや、クリーンな空のプロジェクトを作成するためのテンプレートなどがあります。Visual Studio provides a variety of Python project templates to quickly set up a number of application structures, including a template to create a project from an existing folder tree and a template to create a clean, empty project. 詳しくは、後の「プロジェクト テンプレート」をご覧ください。See Project templates below for an index.

このトピックの内容In this topic:

<a name="lightweight-usage-project-free"<a name="lightweight-usage-project-free"

ヒント

プロジェクトを使わなくても、Visual Studio で Python コードの作業を問題なく行うことができます。Python ファイル自体を開き、オート コンプリート、IntellSense、デバッグなどの機能を利用できます (エディターで右クリックし、[デバッグの開始]/[デバッグなしで開始] を選びます)。Even without a project, Visual Studio works well with Python code, as you can open a Python file by itself and enjoy auto-complete, IntellSense, and debugging (by right-clicking in the editor and selecting Start [with | without] Debugging). ただし、このようなコードは常に既定のグローバル環境を使うので、コードが別の環境向けのものである場合は正しくない入力候補やエラーが表示されることがあります。Because such code always uses the default global environment, however, you may see incorrect completions or errors if the code is meant for a different environment. さらに、Visual Studio は 1 つのファイルが開かれたフォルダー内のすべてのファイルとパッケージを分析するので、かなりの CPU 時間を消費します。Furthermore, Visual Studio analyzes all files and packages in the folder from which the single file is opened, which could consume considerable CPU time.

後の「既存ファイルからのプロジェクトの作成」で説明されているように、既存のコードから Visual Studio プロジェクトを作成すると簡単です。It's a simple matter to create a Visual Studio project from existing code, as described below in Creating a project from existing files.

Visual Studio での Python プロジェクトの概要については、「Getting Python Code」 (Python コードを取得する) (Microsoft Virtual Academy、2 分 17 秒) をご覧ください。For an introduction to Python projects in Visual Studio, see the video Getting Python Code (Microsoft Virtual Academy, 2m17s).

また、以前のビデオ「Deep Dive: Using source control with Python projects」(Deep Dive: Python プロジェクトでのソース管理の使用) (youtube.com、8 分 55 秒) もご覧ください。Also see the older video Deep Dive: Using source control with Python projects (youtube.com, 8m55s).

ファイルの追加、スタートアップ ファイルの割り当て、環境の設定Adding files, assigning a startup file, and setting environments

アプリケーションを開発するときは、通常、さまざまな種類の新しいファイルをプロジェクトに追加する必要があります。As you develop your application, you typically need to add new files of different types to the project. プロジェクトを右クリックして [追加] > [既存の項目...] を選ぶと、簡単にファイルを参照して追加できます。また、[追加] > [新しい項目...] を選ぶと、空の Python ファイル、Python クラス、単体テスト、Web アプリケーション関連の各種ファイルを含むさまざまな項目テンプレートがダイアログに表示されます。Adding such files is easily done by right-clicking the project and selecting Add > Existing Item..., with which you browse for a file to add, or Add > New Item..., which brings up a dialog with a variety of item templates including empty python files, a python class, a unit test, and various files related to web applications. テスト プロジェクトでこれらのオプションを調べて、お使いのバージョンの Visual Studio で使用可能なものについて学習することをお勧めします。We encourage you to explore these options with a test project to learn what's available in your version Visual Studio.

Python の各プロジェクトには 1 つのスタートアップ ファイルが割り当てられており、ソリューション エクスプローラーでは太字で表示されます。Each Python project has one assigned start-up file, shown in boldface in Solution Explorer. デバッグを開始すると (F5 キーを押すか、[デバッグ] > [デバッグを開始] を選ぶ)、または対話型ウィンドウでプロジェクトを実行すると (Shift + Alt + F5 キーを押すか、[デバッグ] > [Python Interactive でプロジェクトを実行] を選ぶ)、スタートアップ ファイルが実行されます。The startup file is the file that's run when you start debugging (F5 or Debug > Start Debugging) or run your project in the interactive window (Shift+Alt+F5 or Debug > Execute Project in Python Interactive). これを変更するには、新しいファイルを右クリックし、[Set as Startup File (スタートアップ ファイルとして設定)] を選びます。To change it, right-click the new file and select Set as Startup File.

ヒント

プロジェクトから選択したスタートアップ ファイルを削除し、新しいスタートアップ ファイルを選択しないと、プロジェクトを実行しようとしたときに、Python 出力ウィンドウが表示されてもほとんど瞬時に消えます。If you remove the selected startup file from a project and don't select a new one, attempting to run your project results in a Python output window appearing but then and disappearing almost immediately. このような動作が発生する場合は、スタートアップ ファイルを割り当ててあることを確認します。If you encounter this behavior, check that you have an assigned startup file. また、このような場合に出力ウィンドウを開いたままにするには、プロジェクトを右クリックし、[プロパティ][デバッグ] タブを選び、[インタープリター引数] フィールドに -i を追加します。Also, to keep the output window open in such cases, right-click your project, select Properties, select the Debug tab, then add -i to the Interpreter Arguments field. この引数により、プログラム完了後にインタープリターは対話モードになり、ユーザーが Ctrl + Z キー、Enter キーの順に押して終了するまで、ウィンドウは開いたままになります。This argument causes the interpreter to go into interactive mode after a program completes, thereby keeping the window open until you enter Ctrl+Z, Enter to exit.

新しいプロジェクトは常に既定のグローバル Python 環境と関連付けられます。A new project is always associated with the default global Python environment. プロジェクトを別の環境 (仮想環境を含む) と関連付けるには、プロジェクトで [Python Environments (Python 環境)] ノードを右クリックし、[Add/Remove Python Environments (Python 環境の追加/削除)] を選んで、使う環境を選びます。To associate the project with a different environment (including virtual environments), right-click with Python Environments node in the project, select Add/Remove Python Environments, and select the ones you want. アクティブな環境を変更するには、目的の環境を右クリックして [環境をアクティブ化する] を選びます (次の図を参照)。To change the active environment, right-click the desired environment and select Activate Environment as shown below. 詳しくは、「Python 環境」をご覧ください。For more details, see Python Environments.

Python プロジェクト用の環境のアクティブ化

<a name="project-types"<a name="project-types"

プロジェクト テンプレートProject templates

Visual Studio には、新規に、または既存のコードから、Python プロジェクトをセットアップする複数の方法が用意されています。Visual Studio gives you a number of ways to set up a Python project, either from scratch or from existing code. テンプレートを使うには、[ファイル] > [新規] > [プロジェクト] メニュー コマンドを選ぶか、ソリューション エクスプローラーでソリューションを右クリックして [追加] > [新しいプロジェクト...] を選びます。どちらの場合も、[新しいプロジェクト] ダイアログが表示されます。To use a template, select the File > New > Project... menu command or right-click the solution in Solution Explorer and select Add > New Project..., both of which bring up the New Project dialog below. Python 固有のテンプレートを表示するには、「Python」を検索するか、[テンプレート] > [他の言語] > [Python] ノードを選びます。To see Python-specific templates, either search on "Python" or select the Templates > Other Languages > Python node:

Python テンプレートが表示されている [新しいプロジェクト] ダイアログ

次の表は、Visual Studio 2017 で使うことができるテンプレートをまとめたものです (以前のバージョンでは利用できないテンプレートもあります)。The following table summarizes the templates available in Visual Studio 2017 (not all templates are available in all previous versions):

テンプレートTemplate 説明Description
From Existing Python Code (既存の Python コードから)From Existing Python Code フォルダー構造に存在する既存の Python コードから Visual Studio プロジェクトを作成します。Creates a Visual Studio project from existing Python code in a folder structure.
Python Application (Python アプリケーション)Python Application 空のソース ファイルを 1 つ含む新しい Python アプリケーションの基本的なプロジェクト構造です。A basic project structure for a new Python application with a single, empty source file. 既定では、プロジェクトは既定のグローバル環境のコンソール インタープリターで実行します。これは、異なる環境を割り当てることで変更できます。By default, the project runs in the console interpreter of the default global environment, which you can change by assigning a different environment.
Azure クラウド サービスAzure Cloud Service Python で記述された Azure クラウド サービス用のプロジェクトです。A project for an Azure Cloud Service written in Python.
Web プロジェクトWeb Projects Bottle、Django、Flask、Flask/Jade などのさまざまなフレームワークに基づく Web サーバー用のプロジェクトです。Projects for web servers based on various frameworks including Bottle, Django, Flask, and Flask/Jade.
IronPython Application (IronPython アプリケーション)IronPython Application [Python Application (Python アプリケーション)] テンプレートに似ていますが、IronPython を既定で使って、.NET 相互運用と .NET 言語での混合モード デバッグを可能にします。Similar to the Python Application template, but uses IronPython by default enabling .NET interop and mixed-mode debugging with .NET languages.
IronPython WPF Application (IronPython WPF アプリケーション)IronPython WPF Application IronPython と、アプリケーションのユーザー インターフェイス用に Windows Presentation Foundation の XAML ファイルを使うプロジェクト構造です。A project structure using IronPython with Windows Presentation Foundation XAML files for the application's user interface. Visual Studio は XAML UI デザイナーを提供し、コードビハインドを Python で記述でき、アプリケーションはコンソールを表示しないで実行します。Visual Studio provides a XAML UI designer, code-behind can be written in Python, and the application runs without displaying a console.
IronPython Silverlight Web Page (IronPython Silverlight Web ページ)IronPython Silverlight Web Page Silverlight を使ってブラウザーで実行する IronPython プロジェクトです。An IronPython project that runs in a browser using Silverlight. アプリケーションの Python コードは、スクリプトとして Web ページに含まれます。The application's Python code is included in the web page as script. 定型のスクリプト タグは、Silverlight の内部で実行する IronPython を初期化する JavaScript コードを生成し、それによって Python コードは DOM と対話できます。A boilerplate script tag pulls down some JavaScript code that initializes IronPython running inside of Silverlight, from which your Python code can interact with the DOM.
IronPython Windows Forms Application (IronPython Windows フォーム アプリケーション)IronPython Windows Forms Application IronPython と、Windows フォームを含むコードを使って作成された UI を使うプロジェクト構造。A project structure using IronPython withUI created using code with Windows Forms. アプリケーションはコンソールを表示しないで実行します。The application runs without displaying a console.
Background Application (IoT) (バックグラウンド アプリケーション (IoT))Background Application (IoT) デバイス上でバックグラウンド サービスとして実行する Python プロジェクトの配置をサポートします。Supports deploying Python projects to run as background services on devices. 詳しくは、Windows IoT デベロッパー センターをご覧ください。Visit the Windows IoT Dev Center for more information.
Python 拡張機能モジュールPython Extension Module このテンプレートは、Visual Studio 2017 の Python ワークロードで Python ネイティブ開発ツールをインストールしてある場合、Visual C++ の下に表示されます (「インストール」を参照)。This template appears under Visual C++ if you've installed the Python native development tools with the Python workload in Visual Studio 2017 (see Installation). Python 向け C++ 拡張機能の作成」で説明されているものに似た、C++ 拡張 DLL のコア構造を提供します。It provides the core structure for a C++ extension DLL, similar to what's described on Creating a C++ Extension for Python.

<a name="create-project-from-existing-files"<a name="create-project-from-existing-files"

既存ファイルからのプロジェクトの作成Creating a project from existing files

重要

ここで説明するプロセスでは、元のソース ファイルの移動やコピーは行いません。The process described here does not move or copy the original source files. コピーで作業する場合は、まず、フォルダーを複製します。If you want to work with a copy, duplicate the folder first.

  1. Visual Studio を起動し、[ファイル]、[新規作成]、[プロジェクト] の順に選びます。Launch Visual Studio and select File > New > Project.

  2. [新しいプロジェクト] ダイアログで、"Python" を検索し、"既存の Python コードから" テンプレートを選択し、プロジェクトの名前と場所を指定し、[OK] を選びます。In the New Project dialog, search for "Python", select the "From Existing Python code" template, give the project a name and location, and select OK.

  3. 表示されるウィザードで、既存のコードへのパスを設定し、ファイルの種類に関するフィルターを設定し、プロジェクトで必要な検索パスを指定して、[次へ] を選びます。In the wizard that appears, set the path to your existing code, set a filter for file types, and specify any search paths that your project requires, then select Next. 検索パスが不明である場合は、そのフィールドを空白のままにします。If you don't know what search paths are, leave that field blank.

    [既存のコードから新しいプロジェクトを作成]、手順 1

  4. 次のダイアログで、プロジェクトのスタートアップ ファイルを選択し、[次へ] を選択します In the next dialog, select the startup file for your project and select Next. (必要な場合は、環境を選択します。その必要がなければ、既定値をそのまま使用します)。ダイアログにはフォルダー ツリーのルートにあるファイルしか表示されないことに注意してください。目的のファイルがサブフォルダーにある場合は、スタートアップ ファイルを空白のままにし、ソリューション エクスプローラーを使って後で設定します (以下の説明を参照)。(If desired, select an environment; otherwise accept the defaults.) Note that the dialog shows only files in the root folder; if the file you want is in a subfolder, leave the startup file blank and set it later in Solution Explorer (described below).

    [既存のコードから新しいプロジェクトを作成]、手順 2

  5. プロジェクト ファイル (ディスク上の .pyproj ファイル) の保存先を選択します。Select the location in which to save the project file (a .pyproj file on disk). 必要な場合は、仮想環境の自動検出を組み込み、さまざまな Web フレームワークに対してプロジェクトをカスタマイズすることもできます。If applicable, you can also include auto-detection of virtual environments and customize the project for different web frameworks. これらのオプションのことを確認していない場合は、既定値に設定してままにします。If you're unsure of these options, leave them set to the defaults.

    [既存のコードから新しいプロジェクトを作成]、手順 3

  6. [完了] を選ぶと、プロジェクトが作成されて、ソリューション エクスプローラーで開かれます。Select Finish and Visual Studio creates the project and opens it in Solution Explorer. .pyproj ファイルを別の場所に移動したい場合は、ソリューション エクスプローラーでファイルを選び、[ファイル] > [名前を付けて保存] を選びます。If you want to move the .pyproj file elsewhere, select it in Solution Explorer and choose File > Save As. このアクションによりプロジェクト内のファイル参照は更新されますが、コード ファイルは移動されません。This action updates file references in the project but does not move any code files.

  7. 別のスタートアップ ファイルを設定するには、ソリューション エクスプローラーでファイルを特定し、右クリックして、[スタートアップ ファイルとして設定] を選びます。To set a different startup file, locate the file in Solution Explorer, right-click, and select Set as Startup File.

リンク ファイルLinked files

リンク ファイルは、プロジェクトに取り込まれますが、通常はアプリケーションのプロジェクト フォルダーの外部に存在するファイルです。Linked files are files that brought into a project but typically reside outside of the application's project folders. ソリューション エクスプローラーでは、通常のファイルにショートカットがオーバーレイされたアイコンで示されます。They appear in Solution Explorer as normal files with an overlaid shortcut icon: リンク ファイルのアイコン

リンク ファイルは、通常の <Compile Include="..."> 要素を使って .pyproj ファイルで指定されます。Linked files are specified in the .pyproj file using the normal <Compile Include="..."> element. ディレクトリ構造の外部の相対パスを使って暗黙のリンク ファイルとして、またはソリューション エクスプローラー内のパスを指定することで明示的なリンク ファイルとして、指定できます。They can be implicit linked files if they use a relative path outside of the directory structure, or they can be explicit link files by specifying their path within Solution Explorer:

<Compile Include="..\test2.py">
    <Link>MyProject\test2.py</Link>
</Compile>

次のいずれかの条件が満たされると、リンク ファイルは無視されます。Linked files are ignored under any of the following conditions:

  • リンク ファイルに Link メタデータが含まれ、Include 属性で指定されたパスがプロジェクト ディレクトリ内に存在するThe linked file contains Link metadata and the path specified in the Include attribute lives within the project directory
  • リンク ファイルがプロジェクト階層内に存在するファイルと重複するThe linked file duplicates a file that exists within the project hierarchy
  • リンク ファイルに Link メタデータが含まれ、リンク パスがプロジェクト階層の外部の相対パスであるThe linked file contains Link metadata and the Link path is a relative path outside of the project hierarchy
  • リンク パスがルートになっているThe link path is rooted

リンク ファイルの使用Working with linked files

既存の項目をリンクとして追加するには、ファイルを追加するプロジェクトのフォルダーを右クリックし、[追加] > [既存の項目...] を選びます。表示されるダイアログで、ファイルを選び、[追加] ボタンのドロップダウンから [リンクとして追加] を選びます。To add an existing item as a link, right-click the folder in the project where you wish to add the file, then select Add > Exiting Item.... In the dialog that appears, select a file and choose Add as Link from the drop-down on the Add button. 競合するファイルがない場合は、選んだフォルダーにリンクが作成されます。Provided that there are no conflicting files, this command creates a link in the selected folder. ただし、同じ名前のファイルが既に存在する場合、またはそのファイルへのリンクがプロジェクト内に既に存在する場合は、リンクは追加されません。However, the link is not added if there is already a file with the same name or a link to that file already exists in the project.

プロジェクト フォルダーに既に存在するファイルにリンクしようとした場合は、リンクとしてではなく通常のファイルとして追加されます。If you attempt to link to a file that already exists in the project folders, it is added as a normal file and not as a link. ファイルをリンクに変換するには、[ファイル] > [名前を付けて保存] を選び、プロジェクト階層外の場所にファイルを保存します。Visual Studio は自動的にそれをリンクに変換します。To convert a file into a link, select File > Save As to save the file to a location outside of the project hierarchy; Visual Studio automatically converts it into a link. 同様に、[ファイル] > [名前を付けて保存] を使ってプロジェクト階層内のどこかにファイルを保存することにより、リンクをファイルに戻すことができます。Similarly, a link can be converted back by using File > Save As to save the file somewhere within the project hierarchy.

ソリューション エクスプローラーでリンク ファイルを移動すると、リンクは移動されますが、実際のファイルは影響を受けません。If you move a linked file in Solution Explorer, the link is moved but the actual file is unaffected. 同様に、リンクを削除すると、リンクだけが削除されて、ファイルには影響ありません。Similarly, deleting a link removes the link without affecting the file.

リンク ファイルの名前を変更することはできません。Linked files cannot be renamed.

参照References

Visual Studio のプロジェクトは、プロジェクトと拡張機能への参照の追加をサポートし、参照はソリューション エクスプローラーの [参照] ノードに表示されます。Visual Studio projects support adding references to projects and extensions, which appear under the References node in Solution Explorer:

Python プロジェクトでの拡張機能の参照

通常、拡張機能の参照は、プロジェクト間の依存関係を示し、設計時に IntelliSense するか、またはコンパイル時にリンクを提供するために使われます。Extension references typically indicate dependencies between projects and are used to provide IntelliSense at design time or linking at compile time. Python プロジェクトも同様の方法で参照を使いますが、Python の動的な性質のため、主として設計時に強化された IntelliSense を提供するために使われます。Python projects use references in a similar fashion, but due to the dynamic nature of Python they are primarily used at design time to provide improved IntelliSense. また、追加の依存関係をインストールするために Microsoft Azure への配置で使うこともできます。They can also be used for deployment to Microsoft Azure to install additional dependencies.

拡張モジュールExtension modules

.pyd ファイルへの参照により、生成されるモジュールに対する IntelliSense が有効になります。A reference to a .pyd file enables IntelliSense for the generated module. Visual Studio は .pyd ファイルを Python インタープリターに読み込み、その型と関数を調べます。Visual Studio loads the .pyd file is loaded into the Python interpreter and introspects its types and functions. また、関数でシグネチャ ヘルプを提供するためにドキュメントの文字列の解析を試みます。It also attempts to parse the doc strings for functions to provide signature help.

ディスクで拡張モジュールが更新された場合、Visual Studio はバックグラウンドでモジュールを再分析します。If at any time the extension module is updated on disk, Visual Studio reanalyzes the module in the background. このアクションによる実行時動作への影響はありませんが、分析が完了するまで一部の入力候補が使えなくなります。This action has no effect on runtime behavior but some completions aren't available until analysis is complete.

また、モジュールを含むフォルダーへの検索パスの追加が必要になることもあります。You may also need to add a search path to the folder containing the module.

.NET プロジェクト.NET projects

IronPython を使う場合は、.NET アセンブリへの参照を追加して IntelliSense を有効にすることができます。When working with IronPython, you can add references to .NET assemblies to enable IntelliSense. ソリューション内の .NETプロジェクトの場合は、Python プロジェクトで [参照] ノードを右クリックし、[参照の追加] を選び、[プロジェクト] タブを選んで、目的のプロジェクトを参照します。For .NET projects in your solution, right-click the References node in your Python project, select Add Reference, select the Projects tab, and browse to the desired project. 別にダウンロードした DLL の場合は、代わりに [参照] タブを選び、目的の DLL を参照します。For DLLs that you've downloaded separately, select the Browse tab instead and browse to the desired DLL.

IronPython での参照は、clr.AddReference('AssemblyName') への呼び出しが行われるまで使えないので、clr.AddReference の呼び出しをアセンブリに追加する必要もあります。Because references in IronPython are not available until a call to clr.AddReference('AssemblyName') is made, you also need to add a clr.AddReference call to the assembly.

WebPI プロジェクトWebPI projects

配置用の WebPI 製品エントリへの参照を Microsoft Azure クラウド サービスに追加し、クラウドで WebPI フィードを使って追加コンポーネントをインストールできます。You can add references to WebPI product entries for deployment to Microsoft Azure Cloud Service where you can install additional components via the WebPI feed. 既定では、表示されるフィードは Python 固有であり、Django、CPython、およびその他の主要なコンポーネントが含まれます。By default, the feed displayed is Python-specific and includes Django, CPython, and other core components. 次に示すように、独自のフィードを選ぶこともできます。You can also select your own feed as shown below. Microsoft Azure に発行すると、セットアップ タスクは参照されているすべての製品をインストールします。When publishing to Microsoft Azure, a setup task installs all of the referenced products.

WebPI の参照