質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.49%

  • Python 3.x

    6843questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Mecab

    177questions

    Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

  • Windows 8

    119questions

    Microsoft Windows 7の後続であり、タッチベースの端末やタブレット機種に向けた新しいインターフェイスを採用しています。

pythonでMecabを使いたいのですが、うまくいきません

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 4,478

Browniet

score 6

ここで質問してもよいのかわからないのですが、
どうしても詰まってしまったので質問させて頂きます。

Windows8.1、Python 3.4.3(64bit)です。

形態素分析を行いたく、Mecabを導入することにしました。
このサイトを参考にやってみました。
そして手順の通り、PythonとMecabにPathを通し、setup.pyとmecab.hを書き換えましたが、buildとinstallがうまくいきません。

ここについてアドバイス頂ければ、と思います。

なおsetup.pyに関して、
return string.split (cmd1(str))
は、
return cmd1(str).split()
に。

include_dirs=[r"C:\Program Files\MeCab\sdk"],
library_dirs=[r"C:\Program Files\MeCab\sdk"],

include_dirs=[r"C:\Program Files (x86)\MeCab\sdk"],
library_dirs=[r"C:\Program Files (x86)\MeCab\sdk"],
に変更しています。

buildとinstallをする時点で以下のようになりました。
--------------------------------
C:\mecab-python-0.996>python setup.py build
running build
running build_py
running build_ext
building '_MeCab' extension
error: Unable to find vcvarsall.bat

C:\mecab-python-0.996>
--------------------------------
どうやらvcvarsall.batが見つからないということですが、
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC
にはvcvarsall.batが確かに存在しています。
システム環境変数Pathの部分に関してもC:\Program Files (x86)\Microsoft Visual Studio 12.0\VCと追記しているので、問題はないかと思うのですが……。

試しに http://go.microsoft.com/?LinkId=9348304からVisual C++ 2008 Express EditionをインストールしてPathを通してやってみたのですが、結果は同じでした。

使える情報かどうかはわからないのですが一応書いておきますと、pythonを開いて以下のように入力するとこのようになりました。
>>> import sys
>>> sys.version
'3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)]'

よろしくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

レジストリからvcvarsall.batを探す動作をするという情報もありますが、
この方法は試されたでしょうか。
pythonでvcvarsall.batエラーが出る。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/06 08:54

    その方法は確かめたことがありませんでしたので、やってみました。
    紹介して頂いたページでの方法ですが、後半部分がどうしてもわかりませんでした……。regeditで見る訳ではないのでしょうか? 文字列を入力や関数を実行など書いてあるのでPython上でやるのかとも思ったのですが、方法がわかりませんでした。

    実行したことについて書くと、
    pythonをコマンドプロンプトで起動し、以下のようになりました。
    --------------------------------
    C:\mecab-python-0.996>python
    Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AM
    D64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from distutils.msvc9compiler import *
    >>> get_build_version()
    10.0
    >>>
    -----------------

    キャンセル

  • 2015/07/06 09:00 編集

    regeditで書き込む、で良いと思います。

    http://mimumimu.net/blog/2014/06/01/python-で-error-unable-to-find-vcvarsall-bat-が出た場合%E3%80%82/

    こちらのページの方ではregeditの画面キャプチャがあるので分かりやすいかも知れません。

    今回の場合だと、おそらく
    キー名: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Setup\VC 
    値名:ProductDir 
    値:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC
    を書き込めば良いのではないかと思います。

    キャンセル

  • 2015/07/06 18:05

    regeditで見た結果ですが、
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0の中にはBindingPathsとVCしかありませんでした(ProductDirも無し)。
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\Setup\VCというのがあったので、もしかしたらVisualStudioの導入で失敗しているのでしょうか……。

    教えて頂いたことをヒントに、参照先(?)を修正するのがこのregeditでの編集なのかと考え、方法を探してみた結果、どうやらUnable to find vcvarsall.bat に関しては解決できたようです。

    以下の手順で行いました。
    -----------------------------------
    C:\mecab-python-0.996>set VS100COMNTOOLS=%VS120COMNTOOLS%

    C:\mecab-python-0.996>python setup.py build
    running build
    running build_py
    running build_ext
    building '_MeCab' extension
    Traceback (most recent call last):
    File "setup.py", line 20, in <module>
    libraries=["libmecab"])
    File "C:\Python34\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
    File "C:\Python34\lib\distutils\dist.py", line 955, in run_commands
    self.run_command(cmd)
    File "C:\Python34\lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
    File "C:\Python34\lib\distutils\command\build.py", line 126, in run
    self.run_command(cmd_name)
    File "C:\Python34\lib\distutils\cmd.py", line 313, in run_command
    self.distribution.run_command(command)
    File "C:\Python34\lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
    File "C:\Python34\lib\distutils\command\build_ext.py", line 339, in run
    self.build_extensions()
    File "C:\Python34\lib\distutils\command\build_ext.py", line 448, in build_exte
    nsions
    self.build_extension(ext)
    File "C:\Python34\lib\distutils\command\build_ext.py", line 503, in build_exte
    nsion
    depends=ext.depends)
    File "C:\Python34\lib\distutils\msvc9compiler.py", line 460, in compile
    self.initialize()
    File "C:\Python34\lib\distutils\msvc9compiler.py", line 371, in initialize
    vc_env = query_vcvarsall(VERSION, plat_spec)
    File "C:\Python34\lib\distutils\msvc9compiler.py", line 287, in query_vcvarsal
    l
    raise ValueError(str(list(result.keys())))
    ValueError: ['path']

    C:\mecab-python-0.996>
    -------------------------------

    別の問題が出てきていますが、とりあえず一歩前進です。
    eripongさんのお蔭でどうにか進むことが出来ました。本当にありがとうございました。

    キャンセル

  • 2015/07/06 18:14

    直接お役に立てなかったようですが、先に進めて良かったです。
    ValueErrorなどで検索するてみましたが、以下のページが参考になるかも知れません。
    http://baito1024.blog.jp/archives/10201616.html

    キャンセル

  • 2015/08/14 18:28

    こんなページもありますね。エラー原因や要求内容などの説明付きです。

    「Unable to find vcvarsall.bat」の対処法
    (http://www.regentechlog.com/2014/04/13/build-python-package-on-windows/)

    キャンセル

+1

自己解決とはちょっと違いますが、導入に成功したので書いておきます。私の環境での話ですが、
このように行いました。私的なメモをコピペしているので読みにくいのは許してください。
----------------------------
pythonとMecabにpathを通した
環境変数にMECABRC(C:\Program Files (x86)\MeCab\etc\mecabrc)を追加した
MeCab-python-0.996にneu101.seesaa.net/article/272153413.htmlからDLした「libmecab.dll」と「libmecab.lib」を追加した。

http://seesaawiki.jp/spz/d/Windows%A4%CBmecab-python%A4%F2%C6%B3%C6%FEに従ってsetup.pyの書き換え。ただしMeCabの場所は自分の所に。

def cmd2(str):
    return string.split(cmd1(str))
    ↓
def cmd2(str):
    return cmd1(str).split()
で。

C:\Program Files (x86)\MeCab\sdkのMeCab.hのclass MECAB_DLL_CLASS_EXTERN Latticeに追加。

class MECAB_DLL_CLASS_EXTERN Lattice {
public:
  /**
   * Clear all internal lattice data.
   */
   virtual void clear()              = 0;
   virtual void set_result(const char *str)        = 0;

その後
set VS100COMNTOOLS=%VS120COMNTOOLS%
前の100はpythonをコンパイルしたVC++。後ろの120は今入ってるVC++。この値を調べるには
>>>import sys
>>>sys.version


call "%PROGRAMFILES(x86)%\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\vcvarsx86_amd64.bat" X64
C:\mecab-python-0.996>
この部分はhttp://neu101.seesaa.net/article/272153413.htmlによると
call "%PROGRAMFILES(x86)%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" X64
だけど、自分がVS2013だからなのか、恐らくパスが違う。というかファイル名も違う。多分これだろうとあたりを付けて変更する。成功。

結果。
set VS100COMNTOOLS=%VS120COMNTOOLS%
call "%PROGRAMFILES(x86)%\Microsoft Visual Studio 12.0\VC\bin\x86_amd64\vcvarsx86_amd64.bat" X64
python setup.py install
-----------------------------------------

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python 3.x

    6843questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Mecab

    177questions

    Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

  • Windows 8

    119questions

    Microsoft Windows 7の後続であり、タッチベースの端末やタブレット機種に向けた新しいインターフェイスを採用しています。