2012-09-30 125 views
9

我很惭愧地问这样一个问题,但我已经尝试了几个小时了......似乎我无法得到我的python版本做随机的东西了。更确切地说,它缺少模块urandomPython:无法导入urandom模块(OS X)

首先,这里有我的系统的一些信息:

  • OSX版本:10.7.4
  • Python版本:Python的2.7.1
  • which python/opt/local/bin/python
  • import os; os<module 'os' from '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>
  • echo $PATH/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin
  • $ENV$PYTHONPATH是空的现在

,当我有一个更深入的了解,并做vim /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py,我可以看到这个文件需要urandom的:

line 47: from os import urandom as _urandom 

于是,顺理成章地,我有失败的时候我尝试运行:

>>> import random 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py", line 47, in <module> 
    from os import urandom as _urandom 
ImportError: cannot import name urandom 

任何想法? urandom应该在哪里生活?到目前为止,我一直在搜索Google。
似乎很多Ubuntu用户都有virtualenv这个问题,但我没有使用virtualenv,而且我不在Ubuntu上。我敢打赌,我的PATH或PYTHONPATH或ENV变量设置不正确,但我不知道如何解决这个问题。

回答

16

好吧,我想通了。 我在我的终端中有一个脏哈希表。

解决方案:

hash -r # will erase the currently used hash table 

一旦这样做,我又跑了Python和我得到:(2.7.3之前2.7.1 VS)

Python 2.7.3 (default, Apr 19 2012, 00:55:09) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import random 
>>> import os; os 
<module 'os' from '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'> 

注意不同Python版本。我认为这是由于通过mac端口安装了较早的python 2.3。

对不起,提问/快速回答:/

祝您有个美好的夜晚!
Arnaud

+0

嗨阿马杜,你是怎么找到这个解决方案的? – CaptainCasey

+2

老实说,我对我可以尝试的事情感到绝望(2个小时来调试这样一个荒谬的问题)。然后这个'哈希'命令浮现在脑海,我尝试了它,它工作。恐怕我没有一个令人敬畏的追逐故事的错误:/ –

+0

感谢您发表本文!当它在构建过程中发生时(我在任何情况下我都不是Python的人)时,我完全被难住了,非常感激。 :-) – Noldorin