Поделиться через


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

Снимок экрана, на котором показаны ссылки на Web Platform Installer (WebPI) в Visual Studio.