工作台 Python 依赖安装失败

当工作台出现 Python 依赖安装时,失败出错文案类似于:
image.png

这时候,请在底部 Output 中查看 Error 上方最后一个安装的库:
image.png

一般出错情况无外乎两种:

  1. 这个库不再兼容 Python 2,但在 Wheel 中没有指定,导致我们 Python 2 依然能够拉到新版本安装,从而报错;
  2. 这个库需要本地构建(一般是 gcc),但缺少工具链,这时候需要通过 sudo xcode-select —install 安装编译工具链,等待安装完成后再重新尝试即可

对于情况 1,我们可以搜索 pypi + libname 往前回溯几个版本,并把这个依赖写死到 requirements.txt 中,注意工作台的每个模型工程有两个 requirements.txt,一个是全局的,一个是本地工程特有的,安装顺序是 global -> local,因此在出错后我们需要调整全局的 requirements.txt 才能正常执行后续步骤,全局 requirements.txt 可以在菜单栏上快捷打开:
image.png

Python 依赖安装后提示找不到

在 macOS 12.0 以后稳定版的 Python 2.7 的 virtualenv 失效了,而 macOS 自带的 python2.7 则修复了此问题,因此会导致原本应当安装在模型目录下的依赖被安装到了全局目录,这里的全局目录指的是 /Applications/.mnnenv/pyenv/Versions/2.7

目前工作台尚未发布新版本,只能采取从全局目录下的依赖 (site-package + bins) 拷贝到实际的 venv 路径下。

模型市场点击 Download 无反应

尝试在 Dock 上右键完全退出工作台,再重新打开。

打开工程报错 Environment Error

如果打开工程时右下角出现了 Environment Error,说明是打开了一个已创建的工程,但你本地没有下载对应的模型:
image.png

这时候你需要在工作台本地先下载过对应的模型才行,如果你不确定是什么模型,请打开工程根目录查看一下工程文件内记录的内容:
image.png

确定了模型后,就需要先通过工作台首页的 create a new project 进行相应的创建:
image.png

image.png

如果 modelName 为 CreateNewPlayground,先点击左上角的 Create Empty Playground 下载对应的模型,如果是 OCR,Portrait 等则直接点击 Download 下载对应的模型即可。

Windows 安装注意事项

由于工作台依赖了 zeromq,该库在 windows 平台额外依赖了 msvcp140.dll, vcruntime140.dll 和 vcruntime140_1.dll,可能会导致部分环境缺失的 windows 电脑(非开发机,或是家庭版)无法正常启动控制台,现象为卡在 Launching 阶段迟迟不动,点击日志查看提示无法加载 zeromq 的 node napi,处理方法见下文。

方法一:手动补全 dll

如果你遇到了这个问题,可以前往 https://download.zip.dll-files.com/ 下载对应的 dll 并且放置到 C:\Windows\System32,再尝试运行工作台;如果仍然不行,可从 https://zeromq.org/download/ 下载 zeromq 的 release 版本压缩包,点击其中的测试用例 exe 看报错缺少了哪个 DLL 进行补全。

方法二:安装 Visual Studio 2015

尝试全量安装 Visual Studio 2015 也可以补全环境问题,但不推荐,推荐采用方法一。

如果以上两种方法仍然没有解决此问题,可在官方交流群中进行反馈,我们会及时跟进处理。

MacOS 工作台 benchmark 等 tools 卡在 launching 问题

这是 benchmark 的 pyenv 环境创建问题导致的,解决方案是随便创建一个模型工程 Playground,它会在 /Application/.mnnenv 下建立 pyenv 环境,随后即可使用 benchmark,在后面的版本中我们会修复这个问题,让 benchmark 可以直接建立 pyenv 环境:
image.png


在工作台的使用中出现问题时,可以通过查看工作台日志来分析具体的问题,如果发现有问题不能自行解决,可以加入 MNN 官方钉钉交流群进行沟通。

请使用钉钉扫码加入该群

image.png
图例 1. MNN 官方钉钉交流群二维码

Python 依赖安装问题

MNN 工作台的 Python 环境间接依赖了一些库,这些库在发布的时候,可能会因为维护者的失误导致错误的将 Python 3 的版本发布到 Python 2 的镜像中,这会导致各种各样的 pip install 失败,常见表现为执行 setup.py 的时候报错,这时候你可以打开 pypi 的 history,在 requirements.txt 中写死出错的库版本(一般向前后退一个大版本即可,如从 1.0.1 退回到 0.9)。

已知问题:

  • 如果出现 pywinpty 安装失败,请在 requirements.txt 中写死 pywinpty==0.5.7

    日志使用流程

工作台日志查看方式为,顶部菜单 Help -> Show Log。
image.png
图例 2. MNN 工作台日志查看流程

在 MacOS / Windows 系统,会启动日志应用来展示工作台日志:
2.png
如果需要 MNN 团队同学帮忙排查问题,请将相应日志文件发送给 MNN 钉钉交流群中的同学。

日志文件默认路径为:

  • Mac 电脑:

~/Library/Application Support/MNNWorkbenchDistData/log/

  • Windows 电脑

其他常见问题汇总

1. 签名问题

如果提示在 Mac 上存在文件已破损、无法安装 或者 打开即闪退的问题,可以打开命令行 terminal,输入

  1. sudo spctl --master-disable

2. image not recognized

下载不完整,需要重新下载,如果多次尝试后依然无效,请通过上文提到的 MNN 官方钉钉交流群联系 MNN 团队同学。

3. resource busy / 资源紧张

  • 可能还没下载完全的时候,就进行打开,关闭后,重试一下
  • 可能下载的不完整,多次打开依然如此的话,请删除重新下载

运行时问题汇总

1. 执行目标检测时停在 Preparing

可能是系统版本过旧,导致 Python3 依赖的 pyzmq 的 binary 中的 dylib 与系统不匹配,通过 Help -> Show Log 可能会看到类似如下内容:

  1. Traceback (most recent call last):
  2. File "<stdin>", line 1, in <module>
  3. File "/Users/joe/Library/Application Support/MNNWorkbenchDataDistExternal/Models/FastDetection/venv/lib/python3.7/site-packages/zmq/__init__.py", line 62, in <module>
  4. from zmq import backend
  5. File "/Users/joe/Library/Application Support/MNNWorkbenchDataDistExternal/Models/FastDetection/venv/lib/python3.7/site-packages/zmq/backend/__init__.py", line 32, in <module>
  6. raise original_error from None
  7. File "/Users/joe/Library/Application Support/MNNWorkbenchDataDistExternal/Models/FastDetection/venv/lib/python3.7/site-packages/zmq/backend/__init__.py", line 27, in <module>
  8. _ns = select_backend(first)
  9. File "/Users/joe/Library/Application Support/MNNWorkbenchDataDistExternal/Models/FastDetection/venv/lib/python3.7/site-packages/zmq/backend/select.py", line 32, in select_backend
  10. mod = import_module(name)
  11. File "/Applications/.mnnenv/pyenv/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
  12. return _bootstrap._gcd_import(name[level:], package, level)
  13. File "/Users/joe/Library/Application Support/MNNWorkbenchDataDistExternal/Models/FastDetection/venv/lib/python3.7/site-packages/zmq/backend/cython/__init__.py", line 6, in <module>
  14. from . import (
  15. ImportError: dlopen(/Users/joe/Library/Application Support/MNNWorkbenchDataDistExternal/Models/FastDetection/venv/lib/python3.7/site-packages/zmq/backend/cython/constants.cpython-37m-darwin.so, 2): Symbol not found: ____chkstk_darwin
  16. Referenced from: /Users/joe/Library/Application Support/MNNWorkbenchDataDistExternal/Models/FastDetection/venv/lib/python3.7/site-packages/zmq/backend/cython/../../.dylibs/libsodium.23.dylib (which was built for Mac OS X 10.15)
  17. Expected in: /usr/lib/libSystem.B.dylib
  18. in /Users/joe/Library/Application Support/MNNWorkbenchDataDistExternal/Models/FastDetection/venv/lib/python3.7/site-packages/zmq/backend/cython/../../.dylibs/libsodium.23.dylib

这时候我们需要手动重新构建 pyzmq 来保证 binary 与当前系统的动态库符号对齐,通过日志中获取到 venv 的 Python 路径 /Users/joe/Library/Application\ Support/MNNWorkbenchDataDistExternal/Models/FastDetection/venv/bin/python3.7,执行如下操作:

  1. /Users/joe/Library/Application\ Support/MNNWorkbenchDataDistExternal/Models/FastDetection/venv/bin/python3.7 -m pip install --force-reinstall --ignore-installed --no-binary :all: pyzmq

如果构建成功,则 pyzmq 可正常工作,重启训练任务即可,如果编译失败,需要根据抛出的问题解决。