GuíasPython

Despliega Proyectos Python

Zeabur soporta varios tipos de proyectos en Python, incluyendo:

Si tu código fuente incluye app.py, main.py o puntos de entrada similares, Zeabur también se iniciará automáticamente.

Soporte para NPM

Si la raíz de su proyecto contiene un package.json, Zeabur instalará automáticamente Node.js y NPM para usted; si su package.json contiene un script de build, Zeabur ejecutará automáticamente npm install && npm run build para construir los artefactos.

Si necesita cambiar los comandos de construcción (por ejemplo, para ejecutar npm run build:dist), consulte la sección sobre Personalización de Comandos de Construcción y Inicio.

Personalizar el punto de entrada

Zeabur reconocerá main.py, app.py, manage.py, server.py, app/__init__.py como puntos de entrada de manera predeterminada, pero si tu punto de entrada no está en la lista anterior, puedes configurar una variable de entorno

ZBPACK_PYTHON_ENTRY=your-entrypoint.py

Alternativamente, añade la siguiente configuración a zbpack.json:

{
    "python": {
        "entry": "your-entrypoint.py"
    }
}

De esta manera, Zeabur usará your-entrypoint.py como el archivo ejecutable de Python.

Si deseas desplegar aplicaciones WSGI/ASGI (como Django, Flask, FastAPI) y el punto de entrada está en __init__.py, debes proporcionar la ruta completa (incluyendo __init__.py):

# server/__init__.py
 
app = Flask(__name__)
ZBPACK_PYTHON_ENTRY=server/__init__.py

Si tu punto de entrada está en __main__.py, también debes proporcionar la ruta completa:

# server/__main__.py
 
print("Hello!")
ZBPACK_PYTHON_ENTRY=server/__main__.py

Personalización de Comandos de Construcción y Inicio

Zeabur le permite personalizar los comandos de construcción e inicio de Python utilizando variables de entorno o archivos de configuración.

Los “comandos de construcción” son adecuados para escenarios donde necesita descargar o compilar artefactos personalizados (como CSS, JavaScript, etc.) o escribir configuraciones constantes. Por ejemplo, si desea escribir configuraciones en la carpeta /etc, puede establecer una variable de entorno así:

ZBPACK_BUILD_COMMAND=echo 'your-configuration' > /etc/somewhere

O agregar las siguientes configuraciones en zbpack.json:

{
    "build_command": "echo 'your-configuration' > /etc/somewhere"
}

También puede ejecutar comandos npm aquí. Tenga en cuenta que Zeabur solo instalará Node.js y NPM si hay un package.json en el directorio raíz del proyecto. Si su proyecto no contiene un package.json, los comandos de npm no estarán disponibles:

{
    "build_command": "npm install && npm run build:dist"
}

Los “comandos de inicio” son adecuados para escenarios cuando necesita ejecutar un comando antes de iniciar una aplicación Python, como agregar python3 migrate.py al comando original para migrar la base de datos. Por ejemplo, puede establecer una variable de entorno así:

ZBPACK_START_COMMAND="python3 migrate.py && _startup"

O agregar las siguientes configuraciones en zbpack.json:

{
    "start_command": "python3 migrate.py && _startup"
}

Aquí, _startup es el comando de inicio original de Zeabur (que se puede encontrar en el código fuente de zbpack). Si tiene un start_command personalizado, _startup debe estar incluido en su comando de inicio; de lo contrario, la aplicación Python no se iniciará.

Tanto build_command como start_command se ejecutarán utilizando una shell compatible con POSIX, por lo que puede usar && para encadenar múltiples comandos, o usar ; para separar múltiples comandos.

Raspado web

Soporte de Playwright

Si tu lista de dependencias (requirements.txt, Pipfile, pyproject.toml, etc.) declara playwright, Zeabur preparará automáticamente el entorno necesario para ejecutar Playwright.

Ten en cuenta que Playwright debe ejecutarse en modo Headless, que suele ser el valor predeterminado.

Soporte de Selenium

Si tu lista de dependencias (requirements.txt, Pipfile, pyproject.toml, etc.) declara seleniumbase o selenium, Zeabur preparará automáticamente el entorno necesario para ejecutar Selenium.

Ten en cuenta que Selenium debe ejecutarse en modo Headless.

Configuración de la versión de Python

Zeabur utiliza Python 3.10 como entorno de ejecución predeterminado, sin embargo, Zeabur seleccionará el entorno de ejecución basado en la versión de Python configurada en tu proyecto. También puedes personalizar el entorno de ejecución según sea necesario.

Especificar la versión de Python en tu proyecto

“Especificar la versión de Python en tu proyecto” es un enfoque más general que funciona en todos los entornos.

Para Pipenv, especifica la versión de Python en el Pipfile:

[requires]
python_version = "3.8"   # Especifica la versión de Python aquí

Para Poetry, especifica la versión de Python en el pyproject.toml:

[tool.poetry.dependencies]
python = "^3.8"  # Especifica la versión de Python aquí

Para PDM, especifica requires-python en el pyproject.toml:

[project]
requires-python = ">= 3.8"  # Especifica la versión de Python aquí

Para Rye, usa el comando rye pin para configurar la versión de Python:

rye pin 3.8  # Especifica la versión de Python aquí

Especificar la versión de Python en Zeabur

Si estás utilizando el tradicional requirements.txt o necesitas anular la versión de Python especificada en tu proyecto para Zeabur, puedes especificar la versión de Python en zbpack.json.

{
    "python": {
        "version": "3.8"
    }
}

O usa la variable de entorno ZBPACK_PYTHON_VERSION para especificar la versión de Python:

ZBPACK_PYTHON_VERSION=3.8

Especificar el archivo de entrada de Streamlit

Si tienes instalada la dependencia streamlit y el nombre del archivo es app.py, main.py o streamlit_app.py, Zeabur lanzará tu aplicación en modo Streamlit por defecto.

Sin embargo, si el nombre del archivo no es uno de estos tres, puedes especificar el nombre del archivo en zbpack.json. Por ejemplo, si el nombre del archivo de tu aplicación Streamlit es myapp.py:

{
    "streamlit": {
        "entry": "myapp.py"
    }
}

De esta manera, Zeabur lanzará tu myapp.py en modo Streamlit. También puedes especificar el nombre del archivo usando la variable de entorno ZBPACK_STREAMLIT_ENTRY:

ZBPACK_STREAMLIT_ENTRY=myapp.py

Especificar el gestor de paquetes

Zeabur admite varios gestores de paquetes de Python:

Zeabur determina el gestor de paquetes más adecuado según la estructura del proyecto. Si no has enviado tu archivo de bloqueo (lockfile) y no está claro qué gestor de paquetes se utiliza en el proyecto, Zeabur no instalará ningún paquete. En este caso, puedes especificar el gestor de paquetes en el archivo zbpack.json:

{
    "python": {
        "package_manager": "pipenv"
    }
}

Alternativamente, puedes usar la variable de entorno ZBPACK_PYTHON_PACKAGE_MANAGER para especificar el gestor de paquetes:

ZBPACK_PYTHON_PACKAGE_MANAGER=pipenv

El valor debe ser uno de los siguientes: pip, pipenv, poetry, pdm, rye o uv.