Python“ImportError:无法导入名称urandom”

3

我的Python出了问题,报错如下:

jseidel@EDP15:/etc/default$ python -c 'import random'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.6/random.py", line 47, in <module>
    from os import urandom as _urandom
ImportError: cannot import name urandom

这不是常见的虚拟环境错误,我从未直接使用Python,也从未明确设置过虚拟环境,系统中没有任何虚拟环境目录或Python脚本。
我正在运行Kubuntu 10.04,并且直到最近我的KPackageKit都正常工作,没有任何问题。现在它什么也没有显示……可能是因为这个Python错误,也可能是因为其他原因。
我该如何查找错误并修复Python?

你尝试过使用apt-get/aptitude升级Python吗? - Dan Steingart
1
从编辑 /usr/lib/python2.6/os.py 开始,将 "print 42" 添加到其末尾。原始文件以 urandom 的定义结束。检查是否出现了 42。如果没有,则正在从其他地方导入另一个 os.py;通过在 random.py 中崩溃行之前添加 "import os; print os.file" 进行检查。 - Armin Rigo
我在我的新Linux系统上也遇到了同样的错误。然而,在我的Ubuntu上没有看到这个错误,它与这个Linux系统完全相同的os.py。顺便说一下,os.py也不包含urandom的定义,正如@JESii所说,最后一行是try块中的'pass'。 - Deqing
1
可能是重复问题:https://dev59.com/6WzXa4cB1Zd3GeqPPxRe - Anis Abboud
2
遵循 @JESii 的建议,我把这个代码添加到了 os.py 的末尾,问题解决了!https://gist.github.com/PureForm/5340738 - PureForm
显示剩余4条评论
1个回答

0

根据@Armin Rigo的建议,这对我有用:

1)在/usr/lib/python2.6/os.py文件末尾添加print 42

2)如果您看到“42”,那么这就是正确的os.py文件,并且urandom模块没有包括。添加语句以包括urandom(您可以从另一个os.py文件中找到示例)。这就是我的解决方案。

3)如果您没有看到“42”,那么这不是您正在使用的os.py文件。查找导致崩溃的random.py文件,并插入import os; print os.__file__以获取有关故障的更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接