1)环境:服务器(非root)
2)需求:安装开源深度学习代码,本机cuda以及pytorch版本太低
3)操作:可能起源于删除环境变量引起的(unset)
a)查看环境变量env、printenv,查看单个变量printenv PATH或者echo $PATH
b)重置环境变量unset PATH(貌似不能删除单个路径),这个慎用!!!
c)添加环境变量export,例如export PATH=/usr/local/cuda-10.2/bin或者export PATH=/usr/local/cuda-10.2/bin:$PATH;另外,永久性添加在.bashrc文件中,并在命令行 source .bashrc,临时添加直接在命令行执行即可。
区别:加:$PATH的表示这个路径放在最开头,那么系统检索的时候会优先选择该路径, 不加:$PATH就默认将路径放到该环境变量最后,如果前面有其他可调用的路径就不会调 用该路径。所以最好不要使用unset,而是使用export PATH= to/your/path:$PATH。
1)安装mmcv时候,ERROR: Failed building wheel for opencv-python
可能的解决方案:运行 pip install -vv,查看哪些依赖库未安装或者未升级。
2)ModuleNotFoundError: No module named ‘skbuild’
pip install scikit-build,如果还有依赖继续pip install下去
如果有cmake相关的,参考:
ModuleNotFoundError: No module named ‘skbuild‘解决办法_月夜竹清的博客-CSDN博客_python skbuild
3)It seems that scikit-learn has not been built correctly或者dlopen: cannot load any more object with static TLS
把scikit-learn版本降下来
4) Python error: Aborted 或者double free or corruption
遇到第4种问题是最坑的,需要定位问题出错的位置。
a)在python程序中添加如下代码,来追溯问题出现位置。
import faulthandler
faulthandler.enable()
b)GDB大法
1、在执行程序的最开头加入如下代码
import sys
def trace(frame, event, arg):
print("%s, %s:%d" % (event, frame.f_code.co_filename, frame.f_lineno))
return trace
sys.settrace(trace)
# 下面是原来的代码
import codecs #
...
2、在命令行执行如下代码
gdb python
然后在弹出的窗口中执行run /path/to/script.py
(gdb) run /path/to/script.py
## wait for segfault ##
一次调试段错误(segmentation fault)的经验 - 知乎
What causes a Python segmentation fault? - Stack Overflow
然后定位到详细问题如下5):
5)ImportError: ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation.
然后采用unset更新环境变量后还是报错,怀疑是直接用了已经下载的安装包安装的,这些安装包是错误的版本。所有采用conda清除无用安装包,参考如下:
conda clean -p //删除缓存
conda clean -y --all //删除pkgs目录下所有的无用安装包及cache
conda清除无用安装包_万无引力-的博客-CSDN博客_conda清理安装包
Python-Opencv [ERROR: recursion is detected during loading of "cv2"_凌空的桨的博客-CSDN博客
ImportError: ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation. - emanlee - 博客园
一路跟着install.readme安装下去,总共报两个错误:
1)ModuleNotFoundError: No module named ‘skbuild’
a. 这个首先注意pip版本是不是过低,有提示就先更新pip。可能错误直接就解决了。
b. 不行的话再根据2中的pip install -vv,看少什么依赖库。
c. 根据2中 2)转载的博客来解决。
2)It seems that scikit-learn has not been built correctly或者dlopen: cannot load any more object with static TLS
把scikit-learn版本降下来0.20.3,Downgrading to scikit-learn 0.20.3 makes the problem go away.
https://github.com/scikit-learn/scikit-learn/issues/14485
问题解决!!适当时候删除代码和虚拟环境重来最好,Over!!