2012-09-30 167 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