{"id":24864,"library":"zenml","title":"ZenML: MLOps for Reliable AI","description":"ZenML is an open-source MLOps framework that helps you build reproducible, production-ready ML pipelines. It provides a unified interface for orchestrating pipelines, managing infrastructure, and tracking experiments across various backends (local, cloud, Kubernetes). The current version is 0.94.3, with frequent releases (multiple per month). It requires Python >=3.10,<3.14.","status":"active","version":"0.94.3","language":"python","source_language":"en","source_url":"https://github.com/zenml-io/zenml","tags":["mlops","pipeline","machine-learning","orchestration","kubernetes"],"install":[{"cmd":"pip install zenml","lang":"bash","label":"Install ZenML"},{"cmd":"pip install zenml[server]","lang":"bash","label":"Install with server dependencies"},{"cmd":"pip install zenml[templates,server]","lang":"bash","label":"Install with templates and server"}],"dependencies":[{"reason":"Database ORM for ZenML server","package":"sqlalchemy","optional":true},{"reason":"REST API server","package":"fastapi","optional":true},{"reason":"Docker image building","package":"docker","optional":true},{"reason":"Kubeflow Pipelines integration","package":"kfp","optional":true}],"imports":[{"note":"Incorrect import path; causes ModuleNotFoundError.","wrong":"from zenml.core import pipeline","symbol":"pipeline","correct":"from zenml import pipeline"},{"note":"Deprecated in v0.20+; use central imports.","wrong":"from zenml.steps import step","symbol":"step","correct":"from zenml import step"},{"note":"Client was moved to zenml.client in v0.50+.","wrong":"from zenml import Client","symbol":"Client","correct":"from zenml.client import Client"},{"note":"ArtifactConfig moved to top-level in v0.93+.","wrong":"from zenml.artifacts import ArtifactConfig","symbol":"ArtifactConfig","correct":"from zenml import ArtifactConfig"}],"quickstart":{"code":"from zenml import pipeline, step\n\n@step\ndef load_data() -> dict:\n    return {'data': [1, 2, 3]}\n\n@step\ndef train_model(data: dict) -> str:\n    return 'model trained with ' + str(len(data['data'])) + ' samples'\n\n@pipeline\ndef my_pipeline():\n    data = load_data()\n    train_model(data)\n\nif __name__ == '__main__':\n    my_pipeline()\n    print('Pipeline run completed')","lang":"python","description":"Define and run a simple two-step pipeline locally."},"warnings":[{"fix":"Update code to handle lists of artifact versions instead of single artifacts.","message":"In v0.93.0, `StepRunResponse.regular_inputs` changed from `Dict[str, ArtifactVersionResponse]` to `Dict[str, List[ArtifactVersionResponse]]`. Code relying on old type will break.","severity":"breaking","affected_versions":">=0.93.0"},{"fix":"Skip `zenml init` unless instructed by the documentation for ZenML Pro.","message":"The `zenml init` command is not needed unless you're using ZenML Pro or legacy project structure. For most users, simply installing and importing ZenML is sufficient.","severity":"gotcha","affected_versions":"all"},{"fix":"Run the provided script to delete pipelines with `latest_run_status is None` before server upgrade.","message":"In v0.93.0, database migration may fail if pipelines without any runs exist. Delete such pipelines before upgrading server.","severity":"breaking","affected_versions":"0.93.0"},{"fix":"Update custom step operators to implement the new methods.","message":"Custom step operator flavors must implement new `submit_step` and `get_step_status` methods (v0.94+). Legacy `launch` method only works for static pipelines.","severity":"gotcha","affected_versions":">=0.94.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use `from zenml import pipeline, step` instead.","cause":"Using old import path that was removed in v0.20+.","error":"ModuleNotFoundError: No module named 'zenml.core'"},{"fix":"Use `from zenml import ArtifactConfig`.","cause":"ArtifactConfig moved to the top-level module in v0.93+.","error":"ImportError: cannot import name 'ArtifactConfig' from 'zenml.artifacts'"},{"fix":"Iterate over the list: for artifact in step_run.regular_inputs['key']: ...","cause":"Code expects a single artifact version, but in v0.93+ `regular_inputs` returns a list for each key.","error":"TypeError: 'ArtifactVersionResponse' object is not iterable"},{"fix":"Run `zenml upgrade` or manually delete and reinitialize the database (careful with production data).","cause":"ZenML server database schema not migrated; older version of database used with newer server.","error":"sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: ..."}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}