1

Python の Cassandra クライアントであるpycassaを Windows 7にインストールしようとしています。

実行pip install pycassaすると、次のエラー メッセージが表示されました。

error: unable to find vcvarsall.bat

さらに詳しく調べてみると、Python がthrift ライブラリと Python バインディングのインストールに失敗していることがわかりました。人々が提案する 1 つの方法は、 Visual Studio 2008 Expressmingwなどの C++ コンパイラを Windows 7 にインストールし、Thrift をソースからコンパイルすることです。

しかし、Thrift のオンライン コンパイル バージョンを見つけました。Thrift のコンパイル済みバージョンを Python にバインドし、それを pycassa で使用する方法はありますか? それとも、ソースから thrift をコンパイルする必要がありますか?

4

1 に答える 1

3

Thrift には実際には 2 つの (種類の) コンポーネントがあります。1 つはインターフェイスを指定してコードを生成する Thrift コンパイラで、もう 1 つは言語ごとのライブラリで、低レベルの Thrift プロトコルと各言語のトランスポートを実装します。

リンク先のThriftコンパイラーはほぼ確実に必要ありません。Thrift python ライブラリが必要です。pip はこれを pycassa の依存関係としてインストールしようとします。壊れている理由は、Thrift python ライブラリに含まれている C 拡張機能があり、インストール プロセス中にそれをコンパイルしようとするためです。コンパイルを機能させるには、いくつかの特別なことを行う必要があります。

開発目的でこれを行っている場合は、最新のThrift Python ライブラリを手動でダウンロードし、src/protocol/fastbinary.c を削除してから、最上位ディレクトリから「setup.py install」を実行できます。これは、拡張機能をコンパイルしてインストールした場合よりも遅くなりますが、開発目的では問題なく動作します。この時点で「pip install --no-deps pycassa」を使用できます。Thrift を自動的にインストールしようとするのではなく、pycassa だけをインストールしようとします。

本番環境でこれを行う場合は、C 拡張機能をコンパイルしてインストールする必要があります。これを行うには、Visual C++ 2008 Express Editionをインストールし、SVN から Thrift の最新バージョンをチェックアウトし、lib/py ディレクトリに移動して、そこで「setup.py install」を実行する必要があります。

于 2011-11-29T22:29:16.673 に答える