Proyectos de Python en Visual Studio

Normalmente, las aplicaciones de Python se definen con solo carpetas y archivos. Esta estructura puede ser compleja a medida que las aplicaciones crecen y quizá impliquen archivos generados automáticamente, JavaScript para aplicaciones web, etc. Un proyecto de Visual Studio puede ayudarle a administrar la complejidad. El proyecto (un archivo .pyproj) identifica los archivos de origen y contenido asociados con el proyecto. También contiene información de compilación de cada archivo, mantiene la información para integrarse con sistemas de control de código fuente y ayuda a organizar la aplicación en componentes lógicos.

Una captura de pantalla donde se ve un proyecto de Python abierto en el Explorador de soluciones en Visual Studio.

Los proyectos siempre se administran dentro de una solución de Visual Studio. Una solución puede contener cualquier número de proyectos que puedan hacer referencia unos a otros, como un proyecto Python que haga referencia a un proyecto C++ que implemente un módulo de extensión. Con esta relación, Visual Studio genera automáticamente el proyecto de C++ (si es necesario) al iniciar la depuración del proyecto de Python. Para más información, consulte ¿Qué son las soluciones y los proyectos en Visual Studio?

Visual Studio proporciona diversas plantillas de proyecto de Python para crear rápidamente varios tipos de estructuras de aplicación. Puede elegir una plantilla para crear un proyecto a partir de un árbol de carpetas existente o crear un proyecto vacío limpio. Para obtener una lista de las plantillas disponibles, consulte la tabla de la sección Plantillas de proyecto.

Recomendaciones para trabajar con proyectos de Python

No es necesario usar proyectos para ejecutar código de Python en Visual Studio, pero hay ventajas para hacerlo. A medida que empiece, revise las siguientes consideraciones sobre cómo trabajar con proyectos y Python.

  • Visual Studio 2019 permite abrir una carpeta que contiene código de Python y ejecutar ese código sin crear archivos de solución y proyecto de Visual Studio.

    Los pasos guiados para este enfoque están disponibles en el artículo Inicio rápido: Apertura y ejecución de código de Python en una carpeta.

  • No necesita un proyecto para ejecutar código de Python en Visual Studio. Todas las versiones de Visual Studio funcionan bien con el código de Python.

    Puede abrir un archivo de Python por sí mismo y acceder inmediatamente a las características de autocompletar, IntelliSense y depuración. Sin embargo, hay algunas desventajas potenciales de trabajar con el código sin un proyecto:

    • Como dicho código siempre usa el entorno global predeterminado, puede ver finalizaciones incorrectas o errores si el código está pensado para un entorno diferente.
    • Visual Studio analiza todos los archivos y paquetes de la carpeta desde la que se abrió el único archivo. Este proceso puede consumir un tiempo considerable de CPU.
  • Puede crear un proyecto de Visual Studio a partir del código existente. Este enfoque se describe en la sección Creación de un proyecto a partir de archivos existentes.

Tareas básicas del proyecto: archivos, entornos e inicio

Cuando se usan proyectos con el código de Python, se completan las tareas básicas, incluida la adición de archivos, la asignación de un archivo de inicio y la configuración del entorno del intérprete de Python.

Al desarrollar la aplicación, normalmente necesita agregar nuevos archivos de distintos tipos al proyecto. Es fácil agregar más archivos. Haga clic con el botón derecho en el proyecto, seleccione Agregar>Elemento existente y busque el tipo de archivo que se va a agregar. La opción Agregar>Nuevo elemento abre un cuadro de diálogo que muestra las plantillas de elemento que puede usar para crear el nuevo archivo. Entre las opciones se incluyen archivos de Python vacíos, una clase de Python, una prueba unitaria y varios archivos relacionados con aplicaciones web. Puede explorar estas opciones con un proyecto de prueba para saber lo que está disponible en la versión de Visual Studio. Para más información, consulte la referencia sobre las plantillas de elementos.

Cada proyecto de Python tiene un archivo de inicio asignado, que se muestra en negrita en el Explorador de soluciones. El archivo de inicio se ejecuta al comenzar la depuración (seleccionando F5 o Depurar>Iniciar depuración) o al ejecutar el proyecto en la ventana interactiva. Puede abrir esta ventana con el método abreviado de teclado Mayús + Alt + F5 o con la selección de Depurar>Ejecutar proyecto en la ventana interactiva de Python. Para cambiarlo, haga clic con el botón derecho en el archivo nuevo y seleccione Establecer como elemento de inicio (o Establecer como archivo de inicio en las versiones anteriores de Visual Studio).

Si quita el archivo de inicio seleccionado de un proyecto y no selecciona otro archivo, Visual Studio no sabrá con que archivo de Python empezar al intentar ejecutar el proyecto. En este caso, Visual Studio 2017, versión 15.6 y posteriores, muestra un error. Las versiones anteriores abren una ventana de salida con el intérprete de Python en ejecución, o la ventana de salida se abre y, a continuación, se cierra inmediatamente. Si se produce alguno de estos comportamientos, compruebe que tiene un archivo de inicio asignado.

Sugerencia

Para mantener abierta la ventana de salida, haga clic con el botón derecho en el proyecto y seleccione Propiedades. En el cuadro de diálogo, seleccione la pestaña Depurar y agregue la marca -i al campo Argumentos del intérprete. Este argumento hace que el intérprete entre en modo interactivo una vez completado un programa. La ventana permanece abierta hasta que la cierre, como mediante el método abreviado de teclado Ctrl+E+Entrar.

Un proyecto nuevo siempre está asociado al entorno de Python global predeterminado. Para asociar el proyecto con un entorno distinto (incluidos los entornos virtuales), haga clic con el botón derecho en el nodo Entornos de Python del proyecto. Seleccione Agregar entorno y, a continuación, seleccione los entornos que desee. También puede usar el control desplegable de entornos de la barra de herramientas para seleccionar un entorno o agregar otro entorno al proyecto.

Captura de pantalla donde se ve el comando Agregar entorno en la barra de herramientas de Python en Visual Studio.

Para cambiar el entorno activo, haga clic con el botón derecho en el entorno que quiera en el Explorador de soluciones y seleccione Activar entorno como se muestra en la imagen siguiente. Para más información, vea Selección de un entorno para un proyecto.

Captura de pantalla que muestra cómo activar un entorno para un proyecto de Python en Visual Studio.

Plantillas de proyecto

Visual Studio ofrece varias maneras de configurar un proyecto de Python, desde cero o a partir de código existente. Para usar una plantilla, seleccione Archivo>Nuevo>Proyecto o haga clic con el botón derecho en la solución en Explorador de soluciones y seleccione Agregar>Nuevo proyecto. En el cuadro de diálogo Nuevo proyecto, puede ver plantillas específicas de Python buscando en Python o seleccionando el nodo Lenguaje>Python:

Captura de pantalla donde aparece el cuadro de diálogo del nuevo proyecto con plantillas de Python disponibles en Visual Studio.

Las plantillas siguientes están disponibles en Visual Studio 2022.

Plantilla Descripción
Desde código de Python existente Crea un proyecto de Visual Studio a partir de código Python existente en una estructura de carpetas.
Aplicación de Python Proporciona una estructura básica de proyecto para una nueva aplicación de Python con un solo archivo de origen vacío. De forma predeterminada, el proyecto se ejecuta en el intérprete de consola del entorno global predeterminado. Puede cambiar la asignación de un entorno diferente.
Proyectos web Proyectos para aplicaciones web basados en distintos marcos, incluidos Bottle, Django y Flask.
Aplicación en segundo plano (IoT) Admite la implementación de proyectos de Python para que se ejecuten como servicios en segundo plano en dispositivos. Para más información, visite el Centro de desarrollo de Windows.
Módulo de extensión de Python Esta plantilla aparece en Visual C++ si ha instalado las herramientas de desarrollo nativo de Python con la carga de trabajo de Python en Visual Studio 2017 o versiones posteriores (consulte Instalación). La plantilla proporciona la estructura básica de un archivo DLL de extensión de C++, similar a la estructura que se describe en Creación de una extensión de C++ para Python.

Las características siguientes están disponibles en Visual Studio 2019. No todas las plantillas disponibles en la versión 2019 están disponibles en versiones anteriores de Visual Studio.

Plantilla Descripción
Desde código de Python existente Crea un proyecto de Visual Studio a partir de código Python existente en una estructura de carpetas.
Aplicación de Python Proporciona una estructura básica de proyecto para una nueva aplicación de Python con un solo archivo de origen vacío. De forma predeterminada, el proyecto se ejecuta en el intérprete de consola del entorno global predeterminado. Puede cambiar la asignación de un entorno diferente.
Proyectos web Proyectos para aplicaciones web basados en distintos marcos, incluidos Bottle, Django y Flask.
Aplicación en segundo plano (IoT) Admite la implementación de proyectos de Python para que se ejecuten como servicios en segundo plano en dispositivos. Para más información, visite el Centro de desarrollo de Windows.
Módulo de extensión de Python Esta plantilla aparece en Visual C++ si ha instalado las herramientas de desarrollo nativo de Python con la carga de trabajo de Python en Visual Studio 2017 o versiones posteriores (consulte Instalación). La plantilla proporciona la estructura básica de un archivo DLL de extensión de C++, similar a la estructura que se describe en Creación de una extensión de C++ para Python.
Aplicación de IronPython Usa IronPython de forma predeterminada y habilita la interoperabilidad de .NET y la depuración en modo mixto con lenguajes .NET. Esta plantilla es similar a la plantilla de aplicación de Python.
Aplicación de WPF de IronPython Proporciona una estructura de proyecto mediante IronPython con archivos XAML de Windows Presentation Foundation para la interfaz de usuario de la aplicación. Visual Studio proporciona un diseñador de IU XAML, el código subyacente se puede escribir en Python y la aplicación se ejecuta sin mostrar una consola.
Página de IronPython y Silverlight Crea un proyecto de IronPython que se ejecuta en un explorador mediante Silverlight. El código Python de la aplicación se incluye en la página web como un script. Una etiqueta de script reutilizable extrae código de JavaScript para inicializar IronPython que se ejecuta dentro de Silverlight, desde donde el código Python puede interactuar con DOM.
Aplicación de Windows Forms de IronPython Genera una estructura de proyecto con IronPython y la interfaz de usuario creada mediante código con Windows Forms. La aplicación se ejecuta sin mostrar una consola.

Nota:

Dado que Python es un lenguaje interpretado, los proyectos de Python en Visual Studio no producen un archivo ejecutable independiente al igual que otros proyectos de lenguaje compilado, como C#. Para obtener más información, consulte Preguntas y respuestas.

Creación de un proyecto a partir de archivos existentes

Siga estos pasos para crear un proyecto a partir de archivos existentes.

Importante

El siguiente proceso no mueve ni copia ningún archivo de origen original. Si desea trabajar con una copia de los archivos, primero duplique la carpeta y, a continuación, cree el proyecto.

  1. Inicie Visual Studio y seleccione Archivo>Nuevo>Proyecto.

  2. En el cuadro de diálogo Crear un nuevo proyecto, busque python, seleccione la plantilla Desde un código de Python existente y seleccione Siguiente.

  3. En el cuadro de diálogo Configure su nuevo proyecto, escriba un nombre de proyecto y una ubicación, elija la solución que va a contener el proyecto y seleccione Crear.

  4. En el asistente para crear nuevo proyecto a partir de un código de Python existente, establezca la ruta de acceso a la carpeta en el código existente, establezca un filtro para los tipos de archivo y especifique las rutas de búsqueda que requiera el proyecto. A continuación, seleccione Siguiente. Si no conoce las rutas de búsqueda, deje el campo en blanco.

    Captura de pantalla de Creación de un nuevo nuevo proyecto a partir de código existente, que incluye la elección de la ruta de acceso de la carpeta, los filtros de tipo de archivo y las rutas de acceso de búsqueda.

  5. En la página siguiente, seleccione el archivo de inicio del proyecto. Visual Studio selecciona el intérprete global predeterminado de Python y la versión. Puede cambiar el entorno mediante el menú desplegable. Cuando esté listo, seleccione Siguiente.

    Nota:

    El cuadro de diálogo muestra solo los archivos de la carpeta raíz. Si el archivo que desea está en una subcarpeta, deje el archivo de inicio en blanco. Puede establecer el archivo de inicio en el Explorador de soluciones, como se describe en un paso posterior.

    Captura de pantalla de la ventana Creación de un nuevo nuevo proyecto a partir de código existente, que incluye la elección del archivo de inicio y el entorno de Python.

  6. Seleccione la ubicación donde desea almacenar el archivo del proyecto (el archivo .pyproj en el disco). Si procede, también puede incluir la detección automática de entornos virtuales y personalizar el proyecto para marcos web diferentes. Si no conoce estas opciones, deje los valores predeterminados.

    Captura de pantalla de la ventana Creación de un nuevo proyecto a partir de código existente, que incluye la ubicación para el archivo del proyecto y otros parámetros opcionales.

  7. Seleccione Finalizar.

    Visual Studio crea el proyecto y lo abre en el Explorador de soluciones. Si desea mover el archivo .pyproj a otra ubicación, seleccione el archivo en el Explorador de soluciones y, a continuación, seleccione Archivo>Guardar como en la barra de herramientas. Esta acción actualiza las referencias de archivo en el proyecto, pero no mueve ningún archivo de código.

  8. Para establecer otro archivo de inicio, localice el archivo en el Explorador de soluciones, haga clic con el botón derecho en el archivo y seleccione Establecer como archivo de inicio.

Archivos vinculados

Los archivos vinculados son archivos que se incorporan a un proyecto pero normalmente residen fuera de las carpetas de proyecto de la aplicación. Estos archivos aparecen en el Explorador de soluciones como archivos normales con un icono de acceso directo superpuesto:

Los archivos vinculados se especifican en el archivo .pyproj mediante el elemento <Compile Include="...">. Los archivos vinculados son implícitos si usan una ruta de acceso relativa fuera de la estructura de directorios. Si los archivos usan rutas de acceso dentro de Explorador de soluciones, los archivos vinculados son explícitos. En el ejemplo siguiente se muestran archivos vinculados explícitamente:

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

Los archivos vinculados se omiten en cualquiera de las condiciones siguientes:

  • El archivo vinculado contiene metadatos Link y la ruta de acceso especificada en el atributo Include reside dentro del directorio del proyecto.
  • El archivo vinculado duplica un archivo que existe dentro de la jerarquía del proyecto.
  • El archivo vinculado contiene metadatos Link y la ruta de acceso Link es una ruta de acceso relativa fuera de la jerarquía del proyecto.
  • La ruta de acceso al vínculo es raíz.

Trabajar con archivos vinculados

Para agregar un elemento existente como un vínculo, haga clic con el botón derecho en la carpeta del proyecto donde desea agregar el archivo y seleccione Agregar>Elemento existente. En el cuadro de diálogo, seleccione un archivo y, a continuación, Agregar>Agregar como vínculo. Si no hay ningún archivo en conflicto, este comando crea un vínculo en la carpeta seleccionada. Sin embargo, el vínculo no se agrega si ya existe un archivo con el mismo nombre o un vínculo a ese archivo en el proyecto.

Si intenta establecer el vínculo a un archivo que ya existe en las carpetas de proyecto, se agrega el archivo como un archivo normal y no como un vínculo. Para convertir un archivo en un vínculo, seleccione Archivo>Guardar como para guardar el archivo en una ubicación fuera de la jerarquía del proyecto. Visual Studio convierte automáticamente el archivo en un vínculo. De forma similar, se puede invertir la conversión de un vínculo mediante Archivo>Guardar como para guardar el archivo en algún lugar dentro de la jerarquía del proyecto.

Si mueve un archivo vinculado en el Explorador de soluciones, dicho vínculo se mueve, pero el archivo real no se ve afectado. De manera similar, al eliminar un vínculo este se quita sin afectar al archivo.

El nombre de los archivos vinculados no se puede cambiar.

Referencias

Los proyectos de Visual Studio admiten la incorporación de referencias a proyectos y extensiones, que aparecen bajo el nodo References del Explorador de soluciones:

Captura de pantalla que muestra cómo agregar una referencia de extensión en proyectos de Python en Visual Studio.

Las referencias de extensión normalmente indican dependencias entre proyectos y se utilizan para proporcionar IntelliSense en tiempo de diseño o vinculación en tiempo de compilación. Los proyectos de Python usan referencias de manera similar pero, debido a la naturaleza dinámica de Python, se utilizan principalmente en tiempo de diseño para mejorar la funcionalidad IntelliSense. También se pueden utilizar para implementación en Microsoft Azure para instalar otras dependencias.

Trabajo con módulos de extensión

Una referencia a un archivo .pyd habilita IntelliSense para el módulo generado. Visual Studio carga el archivo .pyd en el intérprete de Python y realiza introspecciones en sus tipos y funciones. Visual Studio también intenta analizar las cadenas de documento para que las funciones proporcionen ayuda para las firmas.

Si en cualquier momento el módulo de extensión se actualiza en el disco, Visual Studio vuelve a analizarlo en segundo plano. Esta acción no afecta al comportamiento en tiempo de ejecución, pero algunas finalizaciones no están disponibles hasta que se complete el análisis.

Puede que también necesite agregar una ruta de acceso de búsqueda a la carpeta que contiene el módulo.

Trabajo con proyectos de .NET

Cuando trabaje con IronPython, puede agregar referencias a ensamblados de .NET para habilitar IntelliSense. Para los proyectos de .NET de la solución, haga clic con el botón derecho en el nodo Referencias del proyecto de Python y seleccione Agregar referencia. En el cuadro de diálogo, seleccione la pestaña Proyectos y vaya al proyecto deseado. Para archivos DLL que haya descargado por separado, seleccione la pestaña Examinar y vaya al archivo DLL que desee.

Dado que las referencias de IronPython no están disponibles hasta después de una llamada al método clr.AddReference('<AssemblyName>'), también debe agregar una llamada de método clr.AddReference adecuada al ensamblado. Esta llamada normalmente se agrega al principio del código. Por ejemplo, el código creado por la plantilla de proyecto Aplicación de Windows Forms en IronPython (disponible en Visual Studio 2019) de Visual Studio incluye dos llamadas en la parte superior del archivo:

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

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

# Other code omitted

Trabajo con proyectos de WebPI

Puede agregar referencias a entradas de producto del Instalador de plataforma web (WebPI) para la implementación en Microsoft Azure Cloud Services donde puede instalar componentes adicionales a través de la fuente de WebPI. De manera predeterminada, la fuente que se muestra es específica de Python e incluye Django, CPython y otros componentes principales. También puede seleccionar su propia fuente, tal como se muestra en la siguiente imagen. Al publicar en Microsoft Azure, una tarea de configuración instala todos los productos a los que se hace referencia.

Importante

Los proyectos de WebPI no están disponibles en Visual Studio 2017 o Visual Studio 2019.

Captura de pantalla donde se observa las referencias del Instalador de plataforma web (WebPI) en Visual Studio.