我正在开发一个旧的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?
答案 0 :(得分:0)
虽然我不知道是否可以提供更多有用的评论信息,但这是我对这次失败可能原因的准备:
您的操作系统不再向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,但是无声地失败而不是崩溃。
如果上面的代码片段有效,那么你的os.py文件或其编译版本就搞砸了。在这种情况下,您的Python安装已损坏。你需要卸载它,清除所有中间的pyc或pyo文件,然后重新安装它。
鉴于python 2.6.6解释器本身无法找到urandom,Django不太可能成为问题。