ガイドPython

Pythonプロジェクトをデプロイ

Zeaburはさまざまな種類のPythonプロジェクトをサポートしており、以下に限らず、次のようなプロジェクトが含まれます:

ソースコードに app.pymain.py などのエントリーポイントが含まれている場合、Zeaburは自動的に起動します。

NPM サポート

プロジェクトのルートディレクトリに package.json がある場合、Zeabur は自動的に Node.js と NPM をインストールします。さらに、package.jsonbuild スクリプトが含まれている場合、Zeabur は自動的に npm install && npm run build を実行して成果物をコンパイルします。

ビルドコマンドを変更する必要がある場合(例えば npm run build:dist を実行する場合)、〈カスタムビルドおよび起動コマンド〉を参照してください。

カスタムエントリーポイント

Zeabur はデフォルトで main.pyapp.pymanage.pyserver.pyapp/__init__.py のエントリーポイントを認識しますが、あなたのエントリーポイントが上記リストにない場合、環境変数を設定できます

ZBPACK_PYTHON_ENTRY=your-entrypoint.py

または、zbpack.json に以下の設定を追加します:

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

このようにして、Zeabur は your-entrypoint.py を Python の実行ファイルとして使用します。

WSGI/ASGI アプリケーション(Django、Flask、FastAPI など)をデプロイしたい場合で、エントリーポイントが __init__.py 内にある場合、完全なパス(__init__.py を含む)を指定する必要があります:

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

エントリーポイントが __main__.py にある場合も、完全なパスを指定する必要があります:

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

カスタムビルドおよび起動コマンド

Zeabur は、環境変数や設定ファイルを使用して Python のビルドおよび起動コマンドをカスタマイズすることを許可しています。

「ビルドコマンド」は、カスタム成果物(CSS、JavaScript など)をダウンロードまたはコンパイルする必要がある場合や、設定ファイルを構成するシナリオに適しています。例えば、/etc フォルダに設定ファイルを書き込みたい場合、環境変数を次のように設定できます。

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

または、zbpack.json に以下の設定を追加します。

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

ここで npm のコマンドも実行できます。Zeabur はプロジェクトの ルートディレクトリpackage.json がある場合にのみ Node.js と NPM をインストールします。プロジェクトに package.json がない場合、npm コマンドは使用できません。

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

「起動コマンド」は Python アプリケーションを起動する際に使用するシナリオに適しています。例えば、元のコマンドに python3 migrate.py を追加してデータベースのテーブルを作成する場合、環境変数を次のように設定できます。

ZBPACK_START_COMMAND="python3 migrate.py && _startup"

または、zbpack.json に以下の設定を追加します。

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

ここで _startup は Zeabur の元の起動コマンドです(詳細は zbpack で確認できます)。カスタムの start_command を設定する場合、_startup を起動コマンド内で実行する必要があります。そうしないと Python アプリケーションは起動しません。

build_command および start_command は POSIX 互換のシェルで実行されるため、&& を使用して複数のコマンドを連結することや、; を使用して複数のコマンドを区切ることができます。

ウェブスクレイピング

Playwright のサポート

依存関係リスト(requirements.txtPipfilepyproject.toml など)に playwright が宣言されている場合、Zeabur は Playwright を実行するために必要な環境を自動的に準備します。

Playwright は ヘッドレス モードで実行する必要があることに注意してください。通常はデフォルトでそのように設定されています。

Selenium のサポート

依存関係リスト(requirements.txtPipfilepyproject.toml など)に seleniumbase または selenium が宣言されている場合、Zeabur は Selenium を実行するために必要な環境を自動的に準備します。

Selenium は ヘッドレス モードで実行する必要があることに注意してください。

Pythonのバージョンを設定する

ZeaburはデフォルトでPython 3.10を実行環境として使用しますが、プロジェクトで設定されたPythonのバージョンに基づいて実行環境を選択します。また、必要に応じて実行環境をカスタマイズすることもできます。

プロジェクトでPythonのバージョンを指定する

「プロジェクトでPythonのバージョンを指定する」は、すべての環境で使用できる一般的な方法です。

Pipenvの場合、 Pipfile でPythonのバージョンを指定してください

[requires]
python_version = "3.8"   # ここでPythonのバージョンを指定します

Poetryの場合、 pyproject.toml でPythonのバージョンを指定してください

[tool.poetry.dependencies]
python = "^3.8"  # ここでPythonのバージョンを指定します

PDMの場合、 pyproject.tomlrequires-python を指定してください

[project]
requires-python = ">= 3.8"  # ここでPythonのバージョンを指定します

Ryeの場合、 rye pin コマンドを使用してPythonのバージョンを設定してください

rye pin 3.8  # ここでPythonのバージョンを指定します

ZeaburでPythonのバージョンを指定する

従来の requirements.txt を使用している場合、またはプロジェクトで指定されたPythonのバージョンをZeaburで上書きする必要がある場合は、 zbpack.json でPythonのバージョンを指定できます。

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

または、 ZBPACK_PYTHON_VERSION 環境変数を使用してPythonのバージョンを指定します:

ZBPACK_PYTHON_VERSION=3.8

Streamlit 実行ファイルの指定

streamlit の依存関係をインストールしていて、ファイル名が app.pymain.pystreamlit_app.py の場合、Zeabur はデフォルトで Streamlit モードでアプリケーションを起動します。

ただし、ファイル名がこれらの3つのいずれでもない場合、zbpack.json でファイル名を指定できます。例えば、Streamlit アプリケーションのファイル名が myapp.py の場合:

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

このようにすると、Zeabur は myapp.py を Streamlit モードで起動します。環境変数 ZBPACK_STREAMLIT_ENTRY を使用してファイル名を指定することもできます:

ZBPACK_STREAMLIT_ENTRY=myapp.py

カスタムパッケージマネージャー

Zeabur は複数の Python パッケージマネージャーをサポートしています:

Zeabur はプロジェクトの構造に基づいて最適なパッケージマネージャーを選択します。もしパッケージ管理の lockfile を提出せず、プロジェクト構造からどのパッケージマネージャーが使用されているかを明確に判断できない場合、Zeabur はパッケージをインストールしません。この場合、次のように zbpack.json 内でパッケージマネージャーを指定できます:

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

または、環境変数 ZBPACK_PYTHON_PACKAGE_MANAGER を使用してパッケージマネージャーを指定することもできます:

ZBPACK_PYTHON_PACKAGE_MANAGER=pipenv

値は pippipenvpoetrypdmryeuv のいずれかです。