[英]iterative.ai MLEM | ModuleNotFoundError: No module named 'mlem.api'; 'mlem' is not a package
Goal: install and run Python script with MLEM code.目标:使用MLEM代码安装并运行 Python 脚本。
Following this installation guide in the library docs;遵循库文档中的安装指南; pip install mlem
should suffice. pip install mlem
就足够了。
Code:代码:
from mlem.api import import_object
# ...
Traceback:追溯:
$ python3 app/deployment-poc/mlem.py
Traceback (most recent call last):
File "/home/me/BitBucket/project/app/deployment-poc/mlem.py", line 1, in <module>
from mlem.api import import_object
File "/home/me/BitBucket/project/app/deployment-poc/mlem.py", line 1, in <module>
from mlem.api import import_object
ModuleNotFoundError: No module named 'mlem.api'; 'mlem' is not a package
I've installed both via pip
and conda
.我已经通过pip
和conda
安装了。
$ which mlem
/home/me/miniconda3/envs/venv/bin/mlem
$ mlem --version
🐶 MLEM Version: 0.4.1
$ conda list
# packages in environment at /home/me/miniconda3/envs/venv:
#
# Name Version Build Channel
fastapi 0.89.1 pypi_0 pypi
mlem 0.4.1 pypi_0 pypi
(venv) me@laptop:~/BitBucket/project$ pip install mlem --no-dependencies
Requirement already satisfied: mlem in /home/me/miniconda3/envs/venv/lib/python3.10/site-packages (0.4.1)
(venv) me@laptop:~/BitBucket/project$ pip show mlem
Name: mlem
Version: 0.4.1
Summary: Version and deploy your models following GitOps principles
Home-page: https://mlem.ai
Author: Mikhail Sveshnikov
Author-email: mike0sv@iterative.ai
License: Apache License 2.0
Location: /home/me/miniconda3/envs/venv/lib/python3.10/site-packages
Requires: aiohttp, aiohttp-swagger, cached-property, click, cloudpickle, dill, entrypoints, flatdict, fsspec, gitpython, importlib-metadata, isort, iterative-telemetry, Jinja2, pydantic, pyparsing, python-gitlab, python-multipart, requests, rich, typer
Required-by:
Request to have a reputable member create new tag: mlem
要求有信誉的会员创建新标签: mlem
You have a script /home/me/BitBucket/project/app/deployment-poc/mlem.py
which shadows importable package mlem
.您有一个脚本/home/me/BitBucket/project/app/deployment-poc/mlem.py
,它隐藏了可导入的 package mlem
。 With such a script import mlem
in the script tries to import from the very script, not from the package.使用这样的脚本,脚本中的import mlem
会尝试从脚本中导入,而不是从 package 中导入。
Rename mlem.py
to something different.将mlem.py
重命名为不同的名称。
The bottom line: never name you scripts the same as importable packages.底线:永远不要将脚本命名为与可导入包相同的名称。 Never have email.py
or test.py
, etc.从来没有email.py
或test.py
等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.