はじめに (対象読者・この記事でわかること)
この記事は、Pythonで自然言語処理を学び始めたばかりの方や、Markovifyというライブラリを使ってみたいと思っている開発者の方を対象にしています。特にWindows PCをお使いの方で「pip install markovifyを実行したら赤いエラーが大量に出てインストールできない!」という状況に陥った方に最適です。
この記事を読むことで、Markovifyのインストールでよく起こる3つのエラーの原因がわかり、実際にインストールできるようになるだけでなく、今後同様のエラーに遭遇したときの対処法のヒントも得られます。私自身もこのエラーで2時間以上ハマった経験があるので、同じ時間を無駄にしないためにも一連の流れをまとめました。
前提知識
この記事を読み進める上で、以下の知識があるとスムーズです。 - Pythonの基本文法と仮想環境の作り方(venvまたはconda) - コマンドプロンプトまたはPowerShellの基本操作 - pipコマンドの基本的な使い方
Markovifyとは?なぜインストールで躓くのか
Markovifyは、マルコフ連鎖を使って日本語や英語の文章を自動生成できるPythonライブラリです。Twitter botや雑学botを作るときに「なんか適当な文章を自動で生成したい」というニーズでよく使われます。シンプルなAPIで、たった数行のコードで「らしさ」のある文章を量産できるので、自然言語処理の学習用途にも最適です。
しかし、Windows環境では「C++ Build Tools」や「Visual Studio」が必要になるケースが多く、初心者にとっては「PythonのライブラリなのになんでC++のエラーが出るの?」と戸惑うこと請け合いです。実はMarkovifyの依存ライブラリの中に、C言語で書かれた高速化モジュールが含まれており、それをコンパイルする際にWindows標準のビルドツールが不足していることが原因です。
エラーの詳細と完全解決までの道のり
ここからは、実際に私が遭遇したエラーと、それを解決するまでの詳細な手順を説明します。すべての手順はWindows 10/11で動作確認済みです。
ステップ1: エラーの種類を正確に読み取る
まずはエラーメッセージを見極めましょう。以下の3パターンが最も頻繁に出ます。
-
Microsoft Visual C++ 14.0 is required
このエラーは最も有名で、Visual Studio Build Toolsが不足していることを示します。 -
error: Microsoft Visual C++ 14.0 is required
似ていますが、こちらはCythonのコンパイルに失敗しているパターンです。 -
Failed building wheel for smart-open
Markovifyが依存するsmart-openというライブラリのビルドに失敗したケースです。
私の場合は3番目の「smart-open」で躓きました。エラーログを見ると「numpyが原因でビルド失敗」という一文があったので、まずはnumpyをアップグレードしてみました。
ステップ2: 依存関係を整理する
Markovifyは実は「smart-open」「regex」「unidecode」など、裏で複数のライブラリを必要とします。そこで以下の順番でインストールすることで、ビルドエラーを回避できます。
Powershell# 1. 仮想環境を新規作成してactivate python -m venv venv_markovify .\venv_markovify\Scripts\activate # 2. まずnumpyとCythonを最新に pip install --upgrade pip setuptools wheel pip install --upgrade numpy Cython # 3. smart-openを個別にインストール(バージョン固定) pip install smart-open==6.3.0 # 4. 最後にmarkovify本体 pip install markovify
この手順で9割方のエラーが解消します。なぜなら、Markovify本体はPure Pythonで書かれているため、依存ライブラリのビルドが成功すれば問題なく動作するからです。
ハマった点やエラー解決
私がハマったのは「smart-openを個別にインストールしても、再度markovifyを入れると別のバージョンが上書きされてエラーが再発」という状況でした。これはpipの依存解決アルゴリズムが、markovifyの要求するバージョン(>=5.0.0)と私が入れた6.3.0を「互換あり」と判断して、勝手に5.2.0にダウングレードしてしまったためです。
さらに、会社のPCではプロキシ設定が厳しく、ビルドツールのダウンロードに失敗することも判明。以下の追加対処が必要でした。
- プロキシ環境下では
--proxyオプションを明示 - 会社のセキュリティソフトが一時的ファイルのコンパイルをブロックしていたため、一時フォルダの除外設定
解決策
最終的に以下のコマンドで無事インストールできました。
Powershell# すべての依存を凍結済みバージョンでインストール pip install markovify smart-open==6.3.0 regex==2022.9.13 unidecode==1.3.6
これでMarkovifyが使えるようになり、以下のような簡単な日本語文章生成スクリプトが動作しました。
Pythonimport markovify with open("wagahai.txt", encoding="utf-8") as f: text = f.read() model = markovify.Text(text, state_size=2) for i in range(5): print(model.make_sentence())
まとめ
本記事では、Windows環境でMarkovifyをインストールするときに起こるエラーの原因と、実際に解決した手順をまとめました。
- エラーの原因はC++ビルドツールの不足ではなく、依存ライブラリのバージョン競合
- smart-openを先に固定バージョンで入れることで9割回避できる
- プロキシやセキュリティソフトも考慮する必要がある
この記事を通して、読者の方は「Markovifyが入らない=Visual Studioをガバインストール」という固定観念を捨て、より賢く回避策を選べるようになったはずです。今後は、Markovifyを使った和歌botの作り方や、日本語形態素解析と組み合わせた高度な文章生成についても記事にする予定です。
参考資料
