Python: не удается импортировать модуль urandom (OS X)


Мне очень стыдно задавать такой вопрос, но я пытаюсь уже пару часов. already...it кажется, я больше не могу заставить свою версию python делать случайные вещи. Точнее, отсутствует модуль urandom.

Во-первых, вот некоторые сведения о моей системе:

  • версия 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

Есть идеи? Где должен жить урандом? До сих пор я безуспешно искал информацию в интернете.
Кажется, у многих пользователей Ubuntu была эта проблема с virtualenv, но я не использую virtualenv, и я не на Ubuntu. Моя ставка заключается в том, что каким-то образом мой путь, или PYTHONPATH, или переменные ENV не являются установите правильно, но я понятия не имею, как это решить.

1 9

1 ответ:

Хорошо, я понял это. У меня в терминале была грязная хэш-таблица.

Решение:

hash -r  # will erase the currently used hash table

Как только это было сделано, я снова запустил python и получил:

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 (2.7.3 против 2.7.1 ранее). Я думаю, что это связано с более ранней установкой python 2.3 через Mac-порт.

Извините за вопрос / быстрый ответ : /

Спокойной ночи!
Арно