2012-09-30 13 views
9

Jestem dość zawstydzony, aby zadać pytanie takie jak to, ale próbowałem już kilka godzin ... wydaje się, że nie mogę uzyskać mojego pytona wersja do robienia losowych rzeczy już. Dokładniej, brakuje modułu urandom.Python: nie można zaimportować modułu urandom (OS X)

pierwsze, oto kilka informacji o moim systemie:

  • OSX wersja: 10.7.4
  • wersja Pythona: 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 i $PYTHONPATH są puste

Teraz, kiedy mam głębsze spojrzenie i zrobić vim /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py widzę tego pliku wymaga urandom:

line 47: from os import urandom as _urandom 

Tak, całkiem logicznie, mam awarie, gdy próbuję działa :

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

Jakieś pomysły? Gdzie ma żyć urandom? Do tej pory chodziłem bez powodzenia.
Wygląda na to, że wielu użytkowników Ubuntu miało problem z virtualenv, ale ja nie używam virtualenv, a ja nie jestem w Ubuntu. Założę się, że moje zmienne PATH lub PYTHONPATH lub ENV nie są ustawione poprawnie, ale nie mam pojęcia, jak rozwiązać ten problem.

Odpowiedz

16

Ok, wymyśliłem to. Miałem brudny stół mieszający w moim terminalu.

Rozwiązanie:

hash -r # will erase the currently used hash table 

Gdy to się stało, pobiegłem pytona ponownie i mam:

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

zanotować innej wersji Pythona (2.7.3 vs 2.7.1 wcześniej). Myślę, że jest to spowodowane wcześniejszą instalacją Pythona 2.3 przez port mac.

Przepraszam za pytanie/szybką odpowiedź:/

Miłego wieczoru!
Arnaud

+0

Cześć Amaud, jak znalazłeś to rozwiązanie? – CaptainCasey

+2

Szczerze mówiąc, byłem w rozpaczliwym poszukiwaniu rzeczy, które mogłem wypróbować (ponad 2 godziny na debugowanie tak absurdalnego problemu). Wtedy przyszło mi do głowy to polecenie 'hash', spróbowałem, zadziałało. Obawiam się, że nie mam tutaj niesamowitej historii o pogoni za błędami:/ –

+0

Dziękujemy za opublikowanie tego! Byłem całkowicie zdumiony tym, kiedy to nastąpiło podczas procesu budowania (w każdym razie nie jestem facetem Pythona), tak bardzo docenionym. :-) – Noldorin

Powiązane problemy