Проекты Python в Visual Studio

Приложения Python обычно определяются только с помощью папок и файлов. Эта структура может стать сложной по мере роста приложений и, возможно, включает автоматически созданные файлы, JavaScript для веб-приложений и т. д. Проект Visual Studio поможет вам управлять сложностью. Проект ( .pyproj файл) определяет все исходные и контентные файлы, связанные с проектом. Он содержит сведения о сборке для каждого файла, поддерживает сведения для интеграции с системами управления версиями и помогает упорядочивать приложение в логические компоненты.

Снимок экрана: проект Python, открытый в Обозреватель решений в Visual Studio.

Проекты всегда управляются в решении Visual Studio. Решение может содержать любое количество проектов, которые могут ссылаться друг на друга, например проект Python, ссылающийся на проект C++, реализующий модуль расширения. Благодаря этой связи Visual Studio автоматически создает проект C++ (при необходимости), когда вы запускаете отладку проекта Python. Дополнительные сведения см. в разделе "Решения и проекты" в Visual Studio.

Visual Studio предоставляет различные шаблоны проектов Python для быстрого создания нескольких типов структур приложений. Вы можете выбрать шаблон для создания проекта из существующего дерева папок или создать чистый пустой проект. Список доступных шаблонов см. в таблице в разделе "Шаблоны проектов ".

Советы для работы с проектами Python

Вам не нужно использовать проекты для запуска кода Python в Visual Studio, но есть преимущества для этого. При начале работы ознакомьтесь со следующими рекомендациями по работе с проектами и Python.

  • В Visual Studio 2019 и более поздних версиях можно открыть папку с кодом Python и запустить код без создания файлов проекта и решения Visual Studio.

    Инструкции по этому подходу доступны в кратком руководстве. Откройте и запустите код Python в статье о папке .

  • Вам не нужен проект для запуска кода Python в Visual Studio. Все версии Visual Studio хорошо работают с кодом Python.

    Вы можете самостоятельно открыть файл Python и сразу же получить доступ к функциям автозаполнения, IntelliSense и отладке. Однако существуют некоторые потенциальные недостатки для работы с кодом без проекта:

    • Так как код всегда использует глобальную среду по умолчанию, вы можете увидеть неверные завершения или ошибки, если код предназначен для другой среды.
    • Visual Studio анализирует все файлы и пакеты в папке, из которой открывается один файл. Этот процесс может потреблять значительное время ЦП.
  • Проект Visual Studio можно создать из существующего кода. Этот подход описан в разделе "Создание проекта из существующих файлов ".

Основные задачи проекта: файлы, среды и запуск

При использовании проектов с кодом Python вы выполняете основные задачи, включая добавление файлов, назначение файла запуска и настройку среды интерпретатора Python.

При разработке приложения обычно необходимо добавить в проект новые файлы различных типов. Легко добавить дополнительные файлы. Щелкните проект правой кнопкой мыши, выберите "Добавить>существующий элемент" и найдите нужный тип файла. Параметр "Добавить>новый элемент" открывает диалоговое окно с шаблонами элементов, которые можно использовать для создания нового файла. Параметры включают пустые файлы Python, класс Python, модульный тест и различные файлы, связанные с веб-приложениями. Вы можете изучить параметры шаблона с помощью тестового проекта, чтобы узнать, что доступно в вашей версии Visual Studio. Дополнительные сведения см. в справочнике по шаблонам элементов.

Каждый проект Python имеет один назначенный файл запуска, который отображается в полужирном шрифте в Обозреватель решений. Файл запуска запускается при начале отладки (выбрав F5 или Отладка>запуска отладки) или при запуске проекта в интерактивном окне. Это окно можно открыть с помощью сочетания клавиш SHIFT+ALT+F5 или щелкнув "Выполнить отладку>проекта" в Python Interactive. Чтобы изменить файл запуска, щелкните правой кнопкой мыши файл, который нужно использовать, и выберите "Задать в качестве элемента запуска " (или "Задать как файл запуска " в более ранних версиях Visual Studio).

Если удалить выбранный файл запуска из проекта и не выбрать альтернативный файл, Visual Studio не знает, какой файл Python будет использоваться для запуска проекта. В этом случае Visual Studio 2017 версии 15.6 и более поздних версий отображает ошибку. Предыдущие версии либо открывают окно вывода с запущенным интерпретатором Python, либо откроется окно вывода, а затем немедленно закрывается. Если у вас возникла подобная ситуация, убедитесь, что назначен файл запуска.

Совет

Чтобы сохранить окно вывода открытым, щелкните проект правой кнопкой мыши и выберите пункт "Свойства". В диалоговом окне выберите вкладку "Отладка ", а затем добавьте -i флаг в поле "Аргументы интерпретатора". Этот аргумент приводит к переходу интерпретатора в интерактивный режим после завершения программы. Окно остается открытым, пока не закройте его, например с помощью сочетания клавиш CTRL+E+ВВОД.

Новый проект всегда по умолчанию связан с глобальной средой Python. Чтобы связать проект с другой средой (включая виртуальные среды), щелкните правой кнопкой мыши узел сред Python в проекте. Выберите " Добавить среду " и выберите нужные среды. Вы также можете использовать раскрывающийся список сред на панели инструментов, чтобы выбрать среду или добавить другую среду в проект.

Снимок экрана: команда

Чтобы изменить активную среду, щелкните правой кнопкой мыши нужную среду в Обозреватель решений и выберите "Активировать среду", как показано на следующем рисунке. Дополнительные сведения см. в разделе о выборе окружения для проекта.

Снимок экрана: активация среды для проекта Python в Visual Studio.

Шаблоны проектов

Visual Studio предоставляет множество способов настройки проекта Python с нуля или из существующего кода. Чтобы использовать шаблон, выберите "Файл>нового>проекта" или щелкните правой кнопкой мыши решение в Обозреватель решений и выберите "Добавить>новый проект". В диалоговом окне нового проекта вы можете просмотреть шаблоны python, выполнив поиск по Python или выбрав узел Python языка>:

Снимок экрана: диалоговое окно нового проекта с доступными шаблонами Python в Visual Studio.

Следующие шаблоны доступны в Visual Studio версии 2022.

Template Description
На основе существующего кода Python Создает проект Visual Studio из существующего кода Python в структуре папок.
Приложение Python Предоставляет базовую структуру проекта для нового приложения Python с одним пустым исходным файлом. По умолчанию проект выполняется в интерпретаторе консоли глобальной среды по умолчанию. Вы можете изменить другую среду.
Веб-проекты Проекты для веб-приложений на базе различных платформ, включая Bottle, Django и Flask.
Фоновое приложение (Интернет вещей) Поддерживает развертывание проектов Python для работы в качестве фоновых служб на устройствах. Дополнительные сведения см. в Центр разработки Windows IoT.
Модуль расширения Python Этот шаблон отображается в Visual C++ при установке собственных средств разработки Python с рабочей нагрузкой Python в Visual Studio 2017 или более поздней версии (см . раздел "Установка"). Шаблон предоставляет базовую структуру библиотеки DLL расширения C++, аналогичную структуре, описанной в статье "Создание расширения C++ для Python".

Следующие шаблоны доступны в Visual Studio версии 2019. Не все шаблоны, доступные в версии 2019, доступны в более ранних версиях Visual Studio.

Template Description
На основе существующего кода Python Создает проект Visual Studio из существующего кода Python в структуре папок.
Приложение Python Предоставляет базовую структуру проекта для нового приложения Python с одним пустым исходным файлом. По умолчанию проект выполняется в интерпретаторе консоли глобальной среды по умолчанию. Вы можете изменить другую среду.
Веб-проекты Проекты для веб-приложений на базе различных платформ, включая Bottle, Django и Flask.
Фоновое приложение (Интернет вещей) Поддерживает развертывание проектов Python для работы в качестве фоновых служб на устройствах. Дополнительные сведения см. в Центр разработки Windows IoT.
Модуль расширения Python Этот шаблон отображается в Visual C++ при установке собственных средств разработки Python с рабочей нагрузкой Python в Visual Studio 2017 или более поздней версии (см . раздел "Установка"). Шаблон предоставляет базовую структуру библиотеки DLL расширения C++, аналогичную структуре, описанной в статье "Создание расширения C++ для Python".
Приложение с IronPython Использует IronPython по умолчанию и включает отладку взаимодействия .NET и смешанного режима с языками .NET. Этот шаблон аналогичен шаблону приложения Python.
Приложение WPF с IronPython Предоставляет структуру проекта с помощью IronPython с XAML-файлами Windows Presentation Foundation для пользовательского интерфейса приложения. Visual Studio предоставляет конструктор пользовательского интерфейса XAML, возможность написания кода программной части на Python, а также возможность запуска приложения без отображения консоли.
Веб-страница с IronPython и Silverlight Создает проект IronPython, который выполняется в браузере с помощью Silverlight. Код приложения Python добавляется на веб-страницу в виде скрипта. Тег скрипта вытягивает код JavaScript для инициализации IronPython, работающего внутри Silverlight, из которого код Python может взаимодействовать с DOM.
Приложение Windows Forms с IronPython Создает структуру проекта с помощью IronPython и пользовательского интерфейса, созданного с помощью кода с Windows Forms. Приложение запускается без вывода консоли.

Примечание.

Так как Python является интерпретируемым языком, проекты Python в Visual Studio не создают автономный исполняемый файл, как и другие скомпилированные языковые проекты, такие как C#. Дополнительные сведения см. в разделе вопросов и ответов.

Создание проекта на основе имеющихся файлов

Выполните следующие действия, чтобы создать проект из существующих файлов.

Внимание

Следующий процесс не перемещает и не копирует исходные исходные файлы. Если вы хотите работать с копией файлов, сначала дублируйте папку, а затем создайте проект.

  1. Запустите Visual Studio и выберите Файл>Создать>Проект.

  2. В диалоговом окне "Создание проекта" найдите python и выберите шаблон существующего кода Python и нажмите кнопку "Далее".

  3. В диалоговом окне "Настройка нового проекта" введите имя и расположение проекта, выберите решение для хранения проекта и нажмите кнопку "Создать".

  4. В мастере создания проекта из существующего кода Python задайте путь к папке существующему коду, задайте фильтр для типов файлов и укажите необходимые пути поиска, а затем нажмите кнопку "Далее". Если вы не знаете пути поиска, оставьте поле пустым.

    Снимок экрана: создание нового проекта из существующего кода, включая выбор пути к папке, фильтров типов файлов и путей поиска.

  5. На следующей странице выберите файл запуска проекта. Visual Studio выбирает глобальный интерпретатор Python по умолчанию и версию. Вы можете изменить среду с помощью раскрывающегося меню. Затем нажмите кнопку Далее.

    Примечание.

    В диалоговом окне отображаются только файлы в корневой папке. Если нужный файл находится в вложенной папке, оставьте файл запуска пустым. Файл запуска можно задать в Обозреватель решений, как описано на следующем шаге.

    Снимок экрана: создание нового проекта из существующего окна кода, включая выбор файла запуска и среды Python.

  6. Выберите расположение для хранения файла проекта ( pyproj-файл на диске). При необходимости можно также включить автоматическое обнаружение виртуальных сред и настроить проект для разных веб-платформ. Если вы не уверены в этих параметрах, оставьте поля, заданные по умолчанию.

    Снимок экрана: создание нового проекта из существующего окна кода, включая расположение файла проекта и другие необязательные параметры.

  7. Выберите Готово.

    Visual Studio создаст проект и откроет его в Обозревателе решений. Если вы хотите переместить pyproj-файл в другое расположение, выберите файл в Обозреватель решений, а затем нажмите кнопку "Сохранить файл>как" на панели инструментов. Это действие обновляет ссылки на файлы в проекте, но не перемещает файлы кода.

  8. Чтобы задать другой файл запуска, найдите файл в Обозреватель решений, щелкните файл правой кнопкой мыши и выберите "Задать в качестве файла запуска".

Связанные файлы

Связанные файлы — это файлы, которые добавлены в проект, но при этом находятся за пределами папок проекта приложения. Эти файлы отображаются в Обозреватель решений как обычные файлы со значком ярлыка:

Связанные файлы указываются в .pyproj файле с помощью <Compile Include="..."> элемента. Связанные файлы неявны, если они используют относительный путь за пределами структуры каталогов. Если файлы используют пути в Обозреватель решений, связанные файлы являются явными. В следующем примере показаны явно связанные файлы:

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

Связанные файлы игнорируются в следующих условиях:

  • Связанный файл содержит Link метаданные и путь, указанный в атрибуте Include , находится в каталоге проекта.
  • Связанный файл дублирует файл, который существует в иерархии проекта.
  • Связанный файл содержит Link метаданные, а Link путь — относительный путь за пределами иерархии проекта.
  • Путь ссылки коренится.

Работа со связанными файлами

Чтобы добавить существующий элемент в качестве ссылки, щелкните правой кнопкой мыши папку в проекте, где нужно добавить файл и выберите "Добавить>существующий элемент". В диалоговом окне выберите файл и нажмите кнопку "Добавить>как ссылку". Если конфликтующих файлов нет, эта команда создает ссылку в выбранной папке. Однако ссылка не добавляется, если в проекте уже существует существующий файл с тем же именем или ссылкой на этот файл.

Если вы пытаетесь связаться с файлом, который уже существует в папках проекта, файл добавляется как обычный файл, а не как ссылка. Чтобы преобразовать файл в ссылку, выберите "Сохранить файл>как", чтобы сохранить файл в расположении вне иерархии проекта. Visual Studio автоматически преобразует файл в ссылку. Аналогичным образом можно преобразовать связь обратно с помощью команды Файл>Сохранить как и сохранить файл в иерархии проекта.

При перемещении связанного файла в обозревателе решений связь также перемещается, но фактический файл при этом не затрагивается. Аналогичным образом, удаление связи приведет к удалению только связи, не затрагивая сам файл.

Связанные файлы нельзя переименовать.

Ссылки

Проекты Visual Studio поддерживают добавление ссылок на проекты и расширения, которые отображаются в узле Ссылки в обозревателе решений.

Снимок экрана: добавление ссылки на расширение в проектах Python в 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 вызов метода в сборку. Обычно этот вызов добавляется в начале кода. Например, код, созданный шаблоном проекта IronPython Windows Forms (доступно в Visual Studio 2019) в Visual Studio, включает два вызова в верхней части файла:

import clr
clr.AddReference('System.Drawing')
clr.AddReference('System.Windows.Forms')

from System.Drawing import *
from System.Windows.Forms import *

# Other code omitted

Работа с проектами WebPI

Вы можете добавить ссылки на записи продукта установщика веб-платформы (WebPI) для развертывания, чтобы Облачные службы Microsoft Azure где можно установить дополнительные компоненты через веб-канал WebPI. По умолчанию отображаемый веб-канал предназначен только для Python и содержит Django, CPython и другие основные компоненты. Вы также можете выбрать собственный веб-канал, как показано на следующем рисунке. При публикации в Microsoft Azure задача установки устанавливает все указанные продукты.

Внимание

Проекты WebPI недоступны в Visual Studio 2017 или Visual Studio 2019.

Снимок экрана: ссылки на установщик веб-платформы (WebPI) в Visual Studio.