PythonのLIBSVM使用小結(二)


ネット上の多くのlibsvmのpythonチュートリアルでは、このような例がよくありますが、実行中にImportError:No module named svmutilのエラーが発生します.
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
このファイルを実行すると、このようなエラーが表示されます.ImportError: No module named svmutil.
最初はosだと思った.chdir()関数は現在のファイルのディレクトリを変更していません.ディレクトリを出力した後、ディレクトリが確かに変更されたことに気づき、その後、そのディレクトリの下のファイルを読み込もうとしましたが、読み取りに成功しました.どうして私ができないのか迷った.pyこのmodule参照.
その後、moduleモジュールを使用する場合はsysにパスをインポートする必要があることがわかりました.path中.sys.pathはpythonの検索モジュールのパスセットでありlistである.python環境でsysを使用できます.path.append(path)は関連するパスを追加しますが、python環境を終了すると自分で追加したパスが自動的に消えます!
sys.pathはpythonの検索モジュールのパスセットであり、主に自分が使用するモジュールをsysに入れる.パスの中でいいです.使い方は
import sys
sys.path.append('E:\developertools\libsvm-3.20\python')
from svmutil import *

それでいいです.
同時にidle環境でosを用いる.chdirは同じ効果を達成することができ、Python(xy)では一時的に等価ではない.具体的な原理はまだ分かりませんが、大神のコメントを通ったり、後で分かったりしてから修正してほしいです.