Python2.6无法导入urandom

时间:2012-11-09 20:27:36

标签: python django ubuntu

我正在开发一个旧的Django项目(Django版本1.3.2,Python版本2.6.6)。运行“python manage.py runserver”给我:“ImportError:无法导入名称urandom”。

在线搜索通过重新运行virtualenv返回一系列有关解决问题的结果。这没有任何意义,因为我从来没有安装过virtualenv,之前的工作正常...所以我认为这对我的python安装一定有问题。

我决定通过运行

关注the Django installation guide来删除并重新安装Django

pip install Django

执行django-admin.py startproject project给了我相同的ImportError。所以我使用pip uninstall Django再次卸载了Django。

现在运行python启动python2.6.6 shell,输入from os import urandom给我“ImportError:无法导入名称urandom”消息,而在python2.7中执行相同操作时不会给出错误。

这里发生了什么?什么打破了我的python2.6.6?

1 个答案:

答案 0 :(得分:0)

虽然我不知道是否可以提供更多有用的评论信息,但这是我对这次失败可能原因的准备:

  1. 您的操作系统不再向Python 2.6.6提供urandom。从我在这里可以看出OSError with "import random" when /dev/urandom doesn't exist,这应该导致OSError或NotImplementedError(而不是ImportError),但之前的文档是错误的。检查是否可以进入系统的urandom的一个不错的方法是运行:

    from posix import urandom
    

    如果不起作用,请尝试:

    from os import O_RDONLY
    aURandom = open("/dev/urandom", O_RDONLY)
    

    如果两者都不起作用,那么你可能无论如何都无法进入系统功能。这可能意味着操作系统设置有点怪。您可能想要在您的Ubuntu安装中实际检查urandom是否实际可用(py / dev / urandom)。你的Python 2.7版本也可能无法访问urandom,但是无声地失败而不是崩溃。

  2. 如果上面的代码片段有效,那么你的os.py文件或其编译版本就搞砸了。在这种情况下,您的Python安装已损坏。你需要卸载它,清除所有中间的pyc或pyo文件,然后重新安装它。

  3. 鉴于python 2.6.6解释器本身无法找到urandom,Django不太可能成为问题。