Fugo Takefusa
09/18/2025, 4:39 AMMarvin
09/18/2025, 4:39 AMMarvin
09/18/2025, 4:44 AMprefect.yaml
is a declarative project/deployment config and it does not execute arbitrary Python files. It’s used by prefect deploy
to locate and import your flow entrypoint, set deployment options, and orchestrate build/push steps. It won’t create Blocks, Variables, or Automations by “running” Python for you.
What you can do instead:
- Blocks
- Create/register block types with the CLI or Python once (e.g., in CI) and then reference them from your code/deployments.
- CLI examples:
prefect block register -m your_package.blocks
prefect block ls
prefect block inspect <block_type>/<block_name>
- Docs: Blocks concept • prefect block CLI
- Variables
- Manage Prefect Variables via CLI or UI; reference them from your flow code.
- CLI examples:
prefect variable set MY_VAR "some value"
prefect variable get MY_VAR
prefect variable ls
- Docs: prefect variable CLI
- Automations
- Define automations in the UI or via the API/SDK. The CLI can list/inspect/pause/resume/delete them, but does not create them.
- CLI examples:
prefect automation ls
prefect automation inspect <id>
prefect automation pause <id>
prefect automation resume <id>
- Docs: prefect automation CLI
If you need to “run a Python script before/after deploy” (e.g., to create/update Blocks/Variables), do that as a separate step in your CI pipeline or local script before calling prefect deploy
. prefect deploy
will import your flow entrypoint (e.g., ./path/to/flow.py:flow_func
), but relying on import-time side effects to create resources is not recommended.
Reference for prefect.yaml
structure and capabilities: prefect.yaml guide
If you can share what you want to automate (e.g., “create an S3 block, set two variables, then deploy this flow”), I can suggest a concrete, repeatable workflow for it.