Posted at

Rackhubで新しいnode.jsを入れるときにImportError: No module named bz2が出たら

More than 5 years have passed since last update.

Rackhubが良い感じなのでnode.jsで遊んでみようと思ったらnvmで入ってるバージョンがちょっと古かったのでnvm install v0.8.12をしたらエラーが起こったのでその時の対応。

出たエラーは以下のとおり。(2012-10-25現在)

Traceback (most recent call last):

File "../../tools/js2c.py", line 36, in <module>
import bz2
ImportError: No module named bz2
make[1]: *** [/home/rackhuber/.nvm/src/node-v0.8.12/out/Release/obj/gen/libraries.cc] エラー 1
make[1]: ディレクトリ `/home/rackhuber/.nvm/src/node-v0.8.12/out' から出ます
make: *** [node] エラー 2
nvm: install v0.8.12 failed!

全部の仮想マシンが同じエラーが起きるとも限らないし、その内発生しなくなる気もするけど、nvmでnodeの0.8.12をインストールしようとしたらエラーが起きた。試しに0.8.7もやってみたけど同じだった。

bz2が入ってなくてpythonがbz2入りでビルドされていないからっぽい。

というわけでbz2-devを入れてPythonをpybrewを使ってインストールしてみる。

$ sudo apt-get uninstall libbz2-dev

正直Pythonのバージョンはどうでもいいのでまだインストールされていないテキトーなところで入れてみた。3系にしてもいいとは思う。

$ pybrew install --configure="--with-zlib --with-bz2 --with-ssl

--with-readline --with-ncurses --with-expat --with-sqlite3 --with-crypt
--with-md5 --with-sha"
2.7.2

無事インストールが終わったらそれをデフォルトにする。

$ pybrew switch 2.7.2

前にインストールしようとして失敗したnodeがあると邪魔なので消しておく(これはうっかり色々消してしまうとまずいと思うので慎重に指定)

$ rm -fr .nvm/src/node-v0.8.12

で、改めてnvmを使ってインストール

$ nvm install v0.8.12

インストール成功して

$ node -v

v0.8.12

となった。