No module named '__prefect_loader__'
See original GitHub issueDescription
The flow run errors with:
Flow could not be retrieved from deployment.
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/prefect/engine.py", line 216, in retrieve_flow_then_begin_flow_run
flow = await load_flow_from_deployment(deployment, client=client)
File "/usr/local/lib/python3.9/site-packages/prefect/client.py", line 107, in with_injected_client
return await fn(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/prefect/deployments.py", line 276, in load_flow_from_deployment
flow = await maybe_flow.unpackage()
File "/usr/local/lib/python3.9/site-packages/prefect/client.py", line 107, in with_injected_client
return await fn(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/prefect/packaging/orion.py", line 24, in unpackage
return self.serializer.loads(serialized_flow.encode())
File "/usr/local/lib/python3.9/site-packages/prefect/packaging/serializers.py", line 190, in loads
return from_qualified_name(blob.decode())
File "/usr/local/lib/python3.9/site-packages/prefect/utilities/importtools.py", line 58, in from_qualified_name
module = importlib.import_module(mod_name)
File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named '__prefect_loader__'
Reproduction / Example
flows/kubes_flow.py:
from prefect import flow, get_run_logger
from prefect.deployments import Deployment
from prefect.flow_runners import KubernetesFlowRunner
from prefect.packaging.orion import OrionPackager
from prefect.packaging.serializers import ImportSerializer
@flow
def kubes_flow() -> None:
# shown in kubectl logs but not prefect ui
print("Hello from Kubernetes!")
# show in prefect ui
logger = get_run_logger()
logger.info("Hello Prefect UI from Kubernetes!")
# use the default OrionPackager to store the flow's import path only
# since the flow is already stored inside the docker image
Deployment(
name="kubes-deployment-orion-packager-import",
flow=kubes_flow,
flow_runner=KubernetesFlowRunner(
image="orion-registry:5000/flow:latest",
),
packager=OrionPackager(serializer=ImportSerializer()),
)
Here’s the block for my flow:
curl -s "http://localhost:4200/api/block_documents/a123815c-7a51-4446-8d56-10dc9fd14047" | jq .
{
"id": "a123815c-7a51-4446-8d56-10dc9fd14047",
"created": "2022-07-09T11:19:50.140724+00:00",
"updated": "2022-07-09T11:19:50.140803+00:00",
"name": "anonymous:48388c349c907ec7959e911b9d42eebd",
"data": {
"value": {
"flow": "__prefect_loader__.kubes_flow"
}
},
"block_schema_id": "02afbc00-fc1e-4dd5-8d42-57b165376620",
"block_schema": {
"id": "02afbc00-fc1e-4dd5-8d42-57b165376620",
"created": "2022-07-09T06:38:11.900676+00:00",
"updated": "2022-07-09T06:41:41.126000+00:00",
"checksum": "sha256:767ab2520040f319ca8d60e137cf23f9698fe51deb30b2b2f5848d0944a336d7",
"fields": {
"title": "JSON",
"description": "A block that represents JSON",
"type": "object",
"properties": {
"value": {
"title": "Value",
"description": "A JSON-compatible value"
}
},
"required": [
"value"
],
"block_type_name": "JSON",
"secret_fields": [],
"block_schema_references": {}
},
"block_type_id": "4dfbd6a2-ba1b-4b44-bfb3-c2732f9fe5dd",
"block_type": {
"id": "4dfbd6a2-ba1b-4b44-bfb3-c2732f9fe5dd",
"created": "2022-07-09T06:38:11.722069+00:00",
"updated": "2022-07-09T06:38:11.722297+00:00",
"name": "JSON",
"logo_url": null,
"documentation_url": null,
"description": null,
"code_example": null,
"is_protected": false
},
"capabilities": []
},
"block_type_id": "4dfbd6a2-ba1b-4b44-bfb3-c2732f9fe5dd",
"block_type": {
"id": "4dfbd6a2-ba1b-4b44-bfb3-c2732f9fe5dd",
"created": "2022-07-09T06:38:11.722069+00:00",
"updated": "2022-07-09T06:38:11.722297+00:00",
"name": "JSON",
"logo_url": null,
"documentation_url": null,
"description": null,
"code_example": null,
"is_protected": false
},
"block_document_references": {},
"is_anonymous": true
}
It looks like __prefect_loader__.kubes_flow
is being stored as the module name rather than flows.kubes_flow
prefect 2.0b8
Issue Analytics
- State:
- Created a year ago
- Reactions:1
- Comments:5 (2 by maintainers)
Top Results From Across the Web
I pip installed Prefect but it says "ModuleNotFoundError"
I pip installed Prefect but it says "ModuleNotFoundError": 'No module named 'prefect' · Are you quite sure your VSCode is using the same ......
Read more >When I run my flow, I see an error: Failed to load and execute ...
ModuleNotFoundError: No module named 'prefect' ... This error indicates that your system cannot find Prefect installation on your system. Your system may default ......
Read more >ModuleNotFoundError: no module named Python Error [Fixed]
When you try to import a module in a Python file, Python tries to resolve this module in several ways. Sometimes, Python throws...
Read more >Resolve "ImportError: No module named" in AWS Glue
When I try to import extra modules or packages using the AWS Glue Python shell, I get an "ImportError: No module named" response....
Read more >Error: “ModuleNotFoundError: No Module Named... - Intel
ModuleNotFoundError: No module named 'openvino.model_zoo.model_api'. Resolution. As of OpenVINO™ Toolkit 2022.1 release, Open Model Zoo Demos requires the ...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Yep splitting out the deployment into its own file works! 🥳
Related to #6629