{"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,"search_vec":"'0.94.3':47 '3.10':57 '3.14':58 'across':37 'ai':5 'backend':39 'build':17 'cloud':41 'current':44 'experi':36 'framework':13 'frequent':49 'help':15 'infrastructur':33 'interfac':28 'kubernet':42,65 'learn':63 'local':40 'machin':62 'machine-learn':61 'manag':32 'ml':22 'mlop':2,12,59 'month':53 'multipl':51 'open':10 'open-sourc':9 'orchestr':30,64 'per':52 'pipelin':23,31,60 'product':20 'production-readi':19 'provid':25 'python':56 'readi':21 'releas':50 'reliabl':4 'reproduc':18 'requir':55 'sourc':11 'track':35 'unifi':27 'various':38 'version':45 'zenml':1,6","created_at":"2026-05-01T08:15:18.850883+00:00","updated_at":"2026-05-01T08:15:18.850883+00:00","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,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"zenml","cli_version":"zenml, version 0.94.4","type":"library","homepage":"https://zenml.io","github":"https://github.com/zenml-io/zenml","docs":"https://docs.zenml.io","changelog":null,"pypi":"https://pypi.org/project/zenml/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["ai-ml","devops","workflow","data"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-29","last_verified":"2026-06-29","next_check":"2026-07-29","install_tag":null}}