2012-09-30 9 views
9

Ich bin ganz beschämt importiert eine Frage wie diese zu fragen, aber ich habe schon ein paar Stunden versucht, ... es scheint, dass ich nicht meinen Python bekommen Version, um zufällige Dinge mehr zu tun. Genauer gesagt fehlt das Modul urandom.Python: nicht urandom Modul (O X)

Zunächst sind hier einige Informationen über mein System:

  • OSX Version: 10.7.4
  • Python-Version: 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 und $PYTHONPATH leer sind

Nun, wenn ich einen tieferen Blick haben und tun vim /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py, kann ich diese Datei sehen erfordert urandom:

line 47: from os import urandom as _urandom 

Also, ganz logisch, ich habe Fehler auftreten, wenn ich laufen versuchen :

>>> 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 

Irgendwelche Ideen? Wo soll der Urwald leben? Ich habe bisher ohne Erfolg gegoogelt.
Es scheint, dass viele Ubuntu-Benutzer dieses Problem mit virtualenv hatten, aber ich benutze nicht virtualenv, und ich bin nicht auf Ubuntu. Meine Wette ist, dass meine PATH- oder PYTHONPATH- oder ENV-Variablen irgendwie nicht richtig eingestellt sind, aber ich habe keine Ahnung, wie ich das lösen soll.

Antwort

16

Ok, ich habe es herausgefunden. Ich hatte eine schmutzige Hash-Tabelle in meinem Terminal.

Lösung:

hash -r # will erase the currently used hash table 

Sobald dies geschehen war, lief ich Python wieder und ich bekam:

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'> 

Beachten Sie die unterschiedlichen Python-Version (2.7.3 vs 2.7.1 vor). Ich denke, das liegt an einer früheren Installation von Python 2.3 über Mac Port.

Sorry für die Frage/schnelle Antwort:/

Haben Sie eine gute Nacht!
Arnaud

+0

Hallo Amaud, wie haben Sie diese Lösung finden? – CaptainCasey

+2

Ehrlich gesagt war ich irgendwie verzweifelt nach Dingen, die ich ausprobieren konnte (2+ Stunden für das Debuggen eines so lächerlichen Problems). Dann kam mir dieser Hash-Befehl in den Sinn, ich habe es ausprobiert, es hat funktioniert. Ich fürchte, ich habe hier keine schreckliche Geschichte über die Bugjagd:/ –

+0

Vielen Dank, dass Sie das hier gepostet haben! Ich war völlig davon betroffen, als es während eines Build-Prozesses auftrat (ich bin auf keinen Fall ein Python-Typ), so sehr geschätzt. :-) – Noldorin