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
.