Python 之 LIBSVM 使用小结(二)

网上许多libsvm的python教程中经常会有这样的例子,但是运行会出现 ImportError: No module named svmutil 的报错。

  1. import os
    import sys
    
    os.chdir('C:\libsvm-3.17\python')
    from svmutil import *
    
    y, x = svm_read_problem('../lkagain.txt')
    m = svm_train(y[:275], x[:275], '-c 5')
    
    y, x = svm_read_problem('../lk2.txt')
    p_label, p_acc, p_val = svm_predict(y[0:], x[0:], m)
    print p_label
    print p_acc
    print p_val

    当我运行这个文件时会报这样的错误
  2. ImportError: No module named svmutil。
  3. 开始我以为是os.chdir()函数没有改变当前文件的目录,当我把目录输出之后发现目录确实改变了,后来又尝试读取了该目录下的文件,也读取成功。此时我迷茫了为什么我不能svmutil.py这个module引用。
  4. 后来发现当我要使用一个module模块时,需要先将其路径导入sys.path中。

    sys.path是python的搜索模块的路径集,是一个list。

    可以在python 环境下使用sys.path.append(path)添加相关的路径,但在退出python环境后自己添加的路径就会自动消失了!

  5. sys.path是python的搜索模块的路径集,主要将自己要使用的模块放入sys.path中就可以了。用法是

  6. import sys
    sys.path.append('E:\developertools\libsvm-3.20\python')
    from svmutil import *

  7. 就可以了。

  8. 同时在idle环境中用os.chdir可以达到相同效果,在Python(xy)中暂时还不等效。

  9. 具体原理暂时还没弄明白,希望有路过大神评论,或以后明白了再来修改。

你可能感兴趣的:(python,Module,libsvm,sys.path,No,named,os.chdir)