Shubham
10/14/2025, 4:06 PMMarvin
10/14/2025, 4:06 PMMarvin
10/14/2025, 4:12 PM@flow).
Two common ways:
1) In Python with flow.from_source(...)
- Works great for multi-module/projects where your flow imports other files.
from prefect import flow
# Option A: load and run the flow immediately
f = flow.from_source(
source="<https://github.com/<owner>/<repo>.git>", # public or private (with credentials available at runtime)
entrypoint="path/to/flow_file.py:flow_function", # relative to repo root
)
# Run once
f()
# Or create a deployment
f.deploy(
name="my-deployment",
work_pool_name="my-work-pool", # optional if set in your project config
)
Notes:
- entrypoint is "path/to/file.py:flow_func_name", relative to the repo root.
- Your flow can import any other modules in the repo (e.g., from mypkg.utils import helper), so a standard Python package/folder structure works fine.
- For private repos, make sure the runtime environment (where your worker runs) has git credentials (SSH key or PAT) so it can clone the repo.
2) With the CLI (prefect deploy)
- Use this when you want to create deployments from your project.
Basic flow:
# From your project root (checked out locally), initialize a project
prefect init
# Edit the generated prefect.yaml (if needed) to set the repo as the source
# Example fields you’ll typically set:
# source: <https://github.com/<owner>/<repo>.git>
# entrypoint: path/to/flow_file.py:flow_function
# Then deploy (you can also pass the entrypoint inline)
prefect deploy path/to/flow_file.py:flow_function --name my-deployment
Key details:
- Prefect clones your repo at runtime and loads the entrypoint, so multi-file folder structures just work.
- You can create multiple deployments from the same repo by pointing to different entrypoints.
- You can pin to a particular branch/tag/commit using your git URL and making sure your worker can access that ref.
- Removed 2.x features: if you used Deployment.build_from_flow() or the prefect deployment build command in 2.x, those are removed in 3.x. Use flow.from_source(...).deploy(...) or prefect deploy instead.
If you can share:
- Is your repo public or private?
- Do you prefer to deploy via Python or via CLI?
- What’s the path to your flow file and flow function?
I can tailor an exact example for your structure.