Gnomeのターミナルを使用してGajimを開こうとすると、次のようになります。
Traceback (most recent call last):
File "gajim.py", line 106, in <module>
import common.configpaths
File "/usr/share/gajim/src/common/configpaths.py", line 27, in <module>
import tempfile
File "/usr/lib64/python2.6/tempfile.py", line 34, in <module>
from random import Random as _Random
File "/usr/lib64/python2.6/random.py", line 47, in <module>
from os import urandom as _urandom
ImportError: cannot import name urandom
これを修正する方法はありますか?
私のOSはMandriva2010.1です、Pythonはv2.4からv2.6にアップグレードされています
おそらく間違ったos.pyモジュールをインポートしています。 python2.6を起動してから、
>>> import os
>>> print os.__file__
それは/usr/lib64/python2.6/os.py
または/usr/lib64/python2.6/os.pyc
である必要があります。見つけたファイルを削除(または名前変更)しない場合。試してみる場合:
>>> os.urandom(3)
これにより、3文字の文字列が得られます。もしそうなら、gajim
は間違ったos.py
モジュールを見つけています。 gajim
を実行したときと同じエラーが発生した場合は、最後に/usr/lib64/python2.6/os.py
を調べてください。存在しない場合は、urandom
を定義する必要があります(行if not _exists("urandom":
を使用)。 )。
python-2.6.5-2.5mdv2010.2.x86_64
の場合のように定義されておらず、/dev/urandom
が存在する場合は、コードを再度追加してみてください。
if not _exists("urandom"):
def urandom(n):
"""urandom(n) -> str
Return a string of n random bytes suitable for cryptographic use.
"""
try:
_urandomfd = open("/dev/urandom", O_RDONLY)
except (OSError, IOError):
raise NotImplementedError("/dev/urandom (or equivalent) not found")
try:
bs = b""
while n - len(bs) >= 1:
bs += read(_urandomfd, n - len(bs))
finally:
close(_urandomfd)
return bs
参照: this バグレポート