打不开加吉姆

打不开加吉姆

当我尝试使用 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

知道如何解决这个问题吗?

我的操作系统是Mandriva 2010.1,Python是从v2.4升级到v2.6

答案1

您可能导入了错误的 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

也可以看看:错误报告

相关内容