Ubuntu 编译pymnn遇到的问题及解决方案

        本文仅记录本人在arm平台上安装pymnn时遇到的问题,仅供参考,并不涵盖编译过程中所有可能出现的问题 。

问题1: python3 build_deps.py时出现:

arm cpu gcc 9.3,CPURuntime.cpp:1559:28: error: ‘CPUINFO_ARM_LINUX_FEATURE_I8MM’ was not declared in this scope

解决方案:

        编辑出现问题的文件,为其添加头文件:

#define CPUINFO_ARM_LINUX_FEATURE_I8MM UINT32_C(0x00002000)

问题2:python3 setup.py install 时

error: urllib3 1.25.11 is installed but urllib3<2,>=1.26.2 is required by {elastic-transport}

 解决方案:编辑setup.py,depend_pip_packages 保留一个 numpy 就可以

问题3:Arm上import MNN时,出现

File "/home/ubuntu/MNN-2.2.2/pymnn/pip_package/MNN/__init__.py", line 4, in from _mnncengine import * ModuleNotFoundError: No module named '_mnncengine'

 解决方案:

locate mnncengine

        定位到"_mnncengine.cpython-37m-aarch64-linux-gnu.so"的位置,比如我的是"/home/ubuntu/MNN-2.2.2/pymnn/pip_package/build/lib.linux-aarch64-3.7/_mnncengine.cpython-37m-aarch64-linux-gnu.so"

        然后编辑出错的文件,比如我这边:

sudo vim /home/ubuntu/MNN-2.2.2/pymnn/pip_package/MNN/__init__.py

        然后在该文件中添加locate得到的相关路径:

import sys
sys.path.append('/home/ubuntu/MNN-2.2.2/pymnn/pip_package/build/lib.linux-aarch64-3.7/')

        然后就可以正常import MNN了 

问题4:只能在pymnn安装目录import MNN,换到其它目录再import MNN时就会显示no module named MNN。

 解决方案:

        需要将生成的 pymnn 模块所在的路径添加到 Python 解释器的搜索路径中。这样,Python 解释器就能够在任何目录下找到并导入pymnn模块。

export PYTHONPATH=/Your_dic_of_pymnn:$PYTHONPATH

        如果希望每次启动终端时都自动设置这个环境变量,可以将上述命令添加到bashrc文件中。然后使用source ~/.bashrc命令来立即生效即可。

你可能感兴趣的:(ubuntu,linux,运维)