Compartir a través de


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á implican archivos generados automáticamente, JavaScript para aplicaciones web, etc. Un proyecto de Visual Studio puede ayudarle a administrar la complejidad. El proyecto (un .pyproj archivo) identifica todos los archivos de origen y contenido asociados al proyecto. Contiene información de compilación para cada archivo, mantiene la información para integrarse con sistemas de control de código fuente y le ayuda a organizar la aplicación en componentes lógicos.

Captura de pantalla que muestra 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 entre sí, como un proyecto de Python que haga referencia a un proyecto de C++ que implemente un módulo de extensión. Con esta relación, Visual Studio compila automáticamente el proyecto de C++ (si es necesario) al iniciar la depuración del proyecto de Python. Para obtener más información, vea Soluciones y proyectos en Visual Studio.

Visual Studio proporciona varias 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 .

Sugerencias 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.

  • En Visual Studio 2019 y versiones posteriores, puede abrir una carpeta que tenga código de Python y ejecute el código sin crear archivos de proyecto y solución de Visual Studio.

    Los pasos guiados para este enfoque están disponibles en el artículo Inicio rápido: Abrir y ejecutar 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 código de Python.

    Puede abrir un archivo de Python directamente y acceder inmediatamente a las funciones de autocompletado, IntelliSense y depuración. Sin embargo, hay algunas desventajas potenciales de trabajar con el código sin un proyecto:

    • Dado que el código siempre usa el entorno global predeterminado, es posible que vea finalizaciones o errores incorrectos 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 abre 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 Crear 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.

A medida que desarrolle la aplicación, normalmente debe agregar nuevos archivos de diferentes 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. Las opciones incluyen archivos de Python vacíos, una clase de Python, una prueba unitaria y varios archivos relacionados con las aplicaciones web. Puede explorar las opciones de plantilla con un proyecto de prueba para obtener información sobre lo que está disponible en la versión de Visual Studio. Para obtener más información, consulte plantillas de ítems.

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>) 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 seleccionando Depurar>ejecutar proyecto en Python Interactivo. Para cambiar el archivo de inicio, haga clic con el botón derecho en el archivo para usar y seleccione Establecer como elemento de inicio (o Establecer como archivo de inicio en versiones anteriores de Visual Studio).

Si quita el archivo de inicio seleccionado de un proyecto y no selecciona un archivo alternativo, Visual Studio no sabe qué archivo de Python usar para iniciar 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 encuentra cualquiera 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 -i marca 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 nuevo proyecto siempre está asociado al entorno de Python global predeterminado. Para asociar el proyecto a un entorno diferente (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 entornos de la barra de herramientas para seleccionar un entorno o agregar otro entorno al proyecto.

Captura de pantalla que muestra 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 deseado en el Explorador de soluciones y seleccione Activar entorno como se muestra en la siguiente imagen. Para obtener más información, vea Seleccionar 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 muchas maneras de configurar un proyecto de Python, ya sea desde cero o desde código existente. Para usar una plantilla, seleccione Archivo>nuevo>proyecto o haga clic con el botón derecho en la solución en el 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 que muestra el cuadro de diálogo del nuevo proyecto con plantillas de Python disponibles en Visual Studio.

Las plantillas siguientes están disponibles en La versión 2022 de Visual Studio.

Template Description
A partir del código de Python existente Crea un proyecto de Visual Studio a partir del código de Python existente en una estructura de carpetas.
Aplicación python Proporciona una estructura de proyecto básica para una nueva aplicación de Python con un único archivo de código fuente vacío. De forma predeterminada, el proyecto se ejecuta en el intérprete de consola del entorno global predeterminado. Puede cambiar asignar un entorno diferente.
Proyectos web Proyectos para aplicaciones web basadas en varios marcos, como Bottle, Django y Flask.
Aplicación en segundo plano (IoT) Admite la implementación de proyectos de Python para ejecutarse como servicios en segundo plano en dispositivos. Para obtener más información, consulte el Centro de desarrollo de Windows IoT.
Módulo de extensión de Python Esta plantilla aparece en Visual C++ si instala las herramientas de desarrollo nativo de Python con la carga de trabajo de Python en Visual Studio 2017 o posterior (consulte Instalación). La plantilla proporciona la estructura principal de un archivo DLL de extensión de C++, similar a la estructura descrita en Creación de una extensión de C++ para Python.

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

Template Description
A partir del código de Python existente Crea un proyecto de Visual Studio a partir del código de Python existente en una estructura de carpetas.
Aplicación python Proporciona una estructura de proyecto básica para una nueva aplicación de Python con un único archivo de código fuente 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 basadas en varios marcos, como Bottle, Django y Flask.
Aplicación en segundo plano (IoT) Admite la implementación de proyectos de Python para ejecutarse como servicios en segundo plano en dispositivos. Para obtener más información, consulte el Centro de desarrollo de Windows IoT.
Módulo de extensión de Python Esta plantilla aparece en Visual C++ si instala las herramientas de desarrollo nativo de Python con la carga de trabajo de Python en Visual Studio 2017 o posterior (consulte Instalación). La plantilla proporciona la estructura principal de un archivo DLL de extensión de C++, similar a la estructura descrita en Creación de una extensión de C++ para Python.
Aplicación 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 aplicación de Python.
Aplicación 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 interfaz de usuario XAML, el código subyacente se puede escribir en Python y la aplicación se ejecuta sin mostrar una consola.
Página web de IronPython Silverlight Crea un proyecto de IronPython que se ejecuta en un explorador mediante Silverlight. El código de Python de la aplicación se incluye en la página web como script. Una etiqueta de script de plantilla descarga el código JavaScript para inicializar IronPython que se ejecuta dentro de Silverlight, desde el cual tu código de Python puede interactuar con el DOM.
Aplicación de Formularios Windows Forms de IronPython Compila una estructura de proyecto con IronPython y la interfaz de usuario creadas 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 generan un archivo ejecutable independiente como otros proyectos de lenguaje compilados 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 y seleccione la plantilla De código de Python existente y seleccione Siguiente.

  3. En el cuadro de diálogo Configurar el nuevo proyecto , escriba un nombre y una ubicación del proyecto, elija la solución que contendrá el proyecto y seleccione Crear.

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

    Captura de pantalla de la creación de un nuevo proyecto a partir del código existente, incluida 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 Nueva creación de proyectos desde código existente, incluida la elección del archivo de inicio y el entorno de Python.

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

    Captura de pantalla de una nueva creación de proyecto desde la ventana Código existente, incluida la ubicación del archivo del proyecto y otras opciones opcionales.

  7. Selecciona 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 Guardar> archivocomo 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 un archivo de inicio diferente, busque 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 introducen en 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 .pyproj archivo mediante el <Compile Include="..."> elemento . 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 en el 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 las condiciones siguientes:

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

Trabajar con archivos vinculados

Para agregar un elemento existente como 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, seleccione Agregar>como vínculo. Si no hay archivos en conflicto, este comando crea un vínculo en la carpeta seleccionada. Sin embargo, el vínculo no se agrega si hay un archivo existente con el mismo nombre o un vínculo a ese archivo ya existe en el proyecto.

Si intenta vincular a un archivo que ya existe en las carpetas del proyecto, el archivo se agrega como un archivo normal y no como vínculo. Para convertir un archivo en un vínculo, seleccione Guardar> archivocomo 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. Del mismo modo, se puede revertir un vínculo utilizando 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, el vínculo se mueve, pero el archivo real no se ve afectado. De forma similar, la eliminación de un vínculo quita el vínculo sin afectar al archivo.

No se puede cambiar el nombre de los archivos vinculados.

Referencias

Los proyectos de Visual Studio admiten la adición de referencias a proyectos y extensiones, que aparecen en el nodo Referencias en el 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 suelen indicar dependencias entre proyectos y se utilizan para proporcionar IntelliSense en tiempo de diseño o enlazar durante la compilación. Los proyectos de Python usan referencias de forma similar, pero debido a la naturaleza dinámica de Python, se usan principalmente durante el diseño para proporcionar mayor IntelliSense. También se pueden usar para la implementación en Microsoft Azure para instalar otras dependencias.

Trabajar con módulos de extensión

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

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

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

Trabajar con proyectos de .NET

Al trabajar 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 los archivos DLL que descargó por separado, seleccione la pestaña Examinar en su lugar y vaya al archivo DLL deseado.

Dado que las referencias en IronPython no están disponibles hasta después de una llamada al método clr.AddReference('<AssemblyName>'), también debe agregar una llamada adecuada al método clr.AddReference en el ensamblado. Esta llamada normalmente se agrega al principio del código. Por ejemplo, el código creado por la aplicación de Windows Forms IronPython (disponible en Visual Studio 2019) en 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

Trabajar con proyectos de WebPI

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

Importante

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

Captura de pantalla que muestra las referencias del Instalador de plataforma web (WebPI) en Visual Studio.