megengine运行报错

megengine运行报错
_终端python导入包是成功状态,程序运行时,会报错
具体内容为:
ImportError: cannot import name 'atexit’ from ‘megengine’ (unknown location)
【版本、环境信息】

  • MegEngine 版本:MegEngine-1.8.2-cp38-cp38-manylinux2014_x86_64)
  • CPU型号:(如为CPU,请提供CPU型号)
  • GPU型号:3090
  • 系统环境:linux 64
  • python版本: 3.8

image
终端运行无报错


程序运行报错

请问和 basecls无法安装 - 问题反馈 - MegEngine 论坛 是同一个环境下出现的问题嘛? 有没有试过重装? 现在这个问题解决了嘛?

基础设施:
python3.8.10 3090 linux_x86 ubantu20.4
pytorch 1.9.0
全新环境开始安装

  1. python3 -m pip install megengine
    安装成功后import megengine成功

  2. pip install BaseCls
    安装成功后 import megengine.module as M
    报错: ImportError: DLL load failed while importing _imperative_rt: 找不到指定的模块。

  3. 尝试轮子安装 进入https://www.megengine.org.cn/whl/mge.html
    4.下载版本 MegEngine-1.8.2-cp38-cp38-manylinux2014_x86_64.whl

  4. pip install MegEngine-1.8.2-cp38-cp38-manylinux2014_x86_64.whl

  5. import megengine.module as M 成功

  6. pip install basecls

  7. import megengine.module as M
    报错: ImportError: cannot import name ‘_atexit’ from ‘megengine’

  8. import basecls
    报错: ModuleNotFoundError: No module named ‘basecls’

  9. 尝试轮子安装 进入https://www.megengine.org.cn/whl/mge.html
    4.下载版本 MegEngine-1.8.1-cp38-cp38-manylinux2014_x86_64.whl

  10. pip install MegEngine-1.8.1-cp38-cp38-manylinux2014_x86_64.whl

  11. import megengine.module as M 成功

  12. 安装basecls换源:pip install basecls -i https://pypi.tuna.tsinghua.edu.cn/simple

  13. import megengine.module as M
    报错: ImportError: cannot import name ‘_atexit’ from ‘megengine’

  14. import basecls
    报错: ModuleNotFoundError: No module named ‘basecls’

  15. 尝试轮子安装 进入https://www.megengine.org.cn/whl/mge.html
    4.下载版本 MegEngine-1.8.1-cp38-cp38-manylinux2014_x86_64.whl

  16. pip install MegEngine-1.8.1-cp38-cp38-manylinux2014_x86_64.whl

  17. import megengine.module as M 成功

  18. 源码方式安装basecls 下载源码 https://so.csdn.net/so/search?q=源码&spm=1001.2101.3001.7020

  19. pip install requirement.txt

  20. python setup.py develop

  21. import basecls 成功

  22. from megengine.data.dataset import CIFAR10 成功

  1. pip install BaseCls
    安装成功后 import megengine.module as M
    报错: ImportError: DLL load failed while importing _imperative_rt: 找不到指定的模块。

这里开始就很奇怪了。能否检查下site-package下的 megengine/init.py 文件是否正常呢?

好的,非常感谢你的耐心.我们会继续跟进这个问题并后续会完善用户体验的.

有个猜测,会不会是你 pip 的版本太老了,更新一下试试吧

感谢你的建议,不过这个真不是啊,安装之前就根据他的提示,更新pip到最新的版本了。

这地方我曾检查过,里面是空的,就很奇怪。

有没有可能一个安装在用户目录下一个安装在根目录下

你的系统环境中应该有多个 pip(Python)环境

当执行 pip3 install 时调用的是系统自带的 pip, 当 python3 -m pip install 时调用的是当前 Python 路径下的 pip. 建议以后每次都使用 python3 -m pip install, 该指令在虚拟的 Python 环境下也可以确保使用到特定的 Python 路径下的 pip 包管理器。可以用 which pip3 命令检查

所以感觉是你把一个包 pip3 install 了(装到系统自带的),另一个包 python3 -m pip install 了(装到其它 Python 环境了,如 miniconda )。对于此特定问题,建议这样装:

  • MegEngine: python3 -m pip install megengine --user (如果你是 30 系显卡,请 下载 对应 Wheel 包本地手动安装
  • BaseCls: 通过源代码安装,记得用 python3 xxxx

如果通过 pip 则 python3 -m pip3 install basecls --user 但是我看 PyPI 上面的 basecls 很久没有更新了,通过这种方法安装 basecls 可能会因为版本太旧或依赖的 basecore 太旧而用不了 cc @xxr @Fatescript 可以 像这样 写 Action

目前 BaseCls 源码版本通常会比 PyPI 发布的版本更新一些,取决于 release 频率。

2赞

我注意到你想要复现 RepLKNet , 所以需要使用最新版本的 MegEngine, 上面链接给出的 社区编译 的版本还未支持到最新版本,如果你是 30 系显卡,请跑到 https://www.megengine.org.cn/whl/mge.html 手动下载对应版本,如

MegEngine-1.11.1+cu114-cp38-cp38-manylinux2014_x86_64.whl

适用于 Python3.8

2赞

感谢您的提示。
如此安装之后确实work,不过还是出现了一个小bug,就是运行程序时候还是会报错
‘No object named ‘DefaultSolver found insolvers register’’
根据他表达的意思是注册器内缺少文件,可是我寻思着这安装的都是basecls内默认的,又不是我自定义的注册器,怎么会找不找呢?是basecls的版本问题吗还是什么意思呢?

我想这个是 basecls 开放出的源码版本或者是依赖的 basecore 源码存在问题,建议跑到对应 GitHub Repo 下去询问有关的维护者。