python2.7.2でmd5をimportできない

IntelSolaris10上でpython2.7.2をmake。virtualenvを作成しようとすると、なにやらmd5とかshaとかが使えないとかなんとかエラーを吐いた。
確認のため、シェルから起動してmd5をインポートしてみるとこんなエラー。

$ /usr/local/python_v272/bin/python
Python 2.7.2 (default, Jul 28 2011, 14:46:57) 
[GCC 4.6.1] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import md5
ERROR:root:code for hash md5 was not found.
Traceback (most recent call last):
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 139, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor
    raise ValueError('unsupported hash type %s' % name)
ValueError: unsupported hash type md5
ERROR:root:code for hash sha1 was not found.
Traceback (most recent call last):
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 139, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor
    raise ValueError('unsupported hash type %s' % name)
ValueError: unsupported hash type sha1
ERROR:root:code for hash sha224 was not found.
Traceback (most recent call last):
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 139, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor
    raise ValueError('unsupported hash type %s' % name)
ValueError: unsupported hash type sha224
ERROR:root:code for hash sha256 was not found.
Traceback (most recent call last):
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 139, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor
    raise ValueError('unsupported hash type %s' % name)
ValueError: unsupported hash type sha256
ERROR:root:code for hash sha384 was not found.
Traceback (most recent call last):
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 139, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor
    raise ValueError('unsupported hash type %s' % name)
ValueError: unsupported hash type sha384
ERROR:root:code for hash sha512 was not found.
Traceback (most recent call last):
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 139, in <module>
    globals()[__func_name] = __get_hash(__func_name)
  File "/usr/local/python_v271/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor
    raise ValueError('unsupported hash type %s' % name)
ValueError: unsupported hash type sha512
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/python_v271/lib/python2.7/md5.py", line 10, in <module>
    from hashlib import md5
ImportError: cannot import name md5

どうしたことだ。
Google先生で検索してみたところ、どうもOpenSSLとの整合性とかなんとか。md5とかshaとかのダイジェストを作るときにOpenSSLのライブラリ参照するからかな。

ライブラリ(libssl.soとかlibcrypt.soとか)を見えるところに置いてみたり、LD_LIBRARY_PATHを変更してみたりしてもだめ。

そういえば、OpenSSLはシステムデフォルトに入っているものと、あとでソースからコンパイルしたものの両方が入っていたことに気づく。LD_LIBRARY_PATHのデフォルトだと/usr/sfw/lib/64のものを参照しているみたい。ん?64?
そうか、64bitモードじゃないとだめか。

以下のようにしてconfigure,make。

$ export CC='/usr/local/bin/gcc -m64'
$ ./configure --enable-unicode --prefix=/usr/local/python_v271
(略)
$ /usr/local/bin/make
# /usr/local/bin/make install
$ /usr/local/python_v271/bin/python
Python 2.7.2 (default, Jul 29 2011, 14:17:41) 
[GCC 4.6.1] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import md5
>>> 

をを、うまくいきました。ライブラリを参照するときに32bitでみていたんだな。それくらいのエラーメッセージだしてくれればよかったのに。