2012-09-30 36 views
9

Estoy muy avergonzado de hacer una pregunta como esta, pero he estado intentando por un par de horas ya ... parece que no puedo obtener mi pitón versión para hacer cosas al azar nunca más. Más precisamente, falta el módulo urandom.Python: no se puede importar el módulo urandom (OS X)

En primer lugar, aquí hay algo de información acerca de mi sistema:

  • OSX versión: 10.7.4
  • versión 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 y $PYTHONPATH están vacías

Ahora, cuando tengo una mirada más profunda y hacer vim /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py, puedo ver este archivo requiere urandom:

line 47: from os import urandom as _urandom 

Así que, lógicamente, no tengo fallos cuando intento correr :

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

¿Alguna idea? ¿Dónde se supone que urandom debe vivir? He estado buscando en Google sin éxito hasta ahora.
Parece que muchos usuarios de Ubuntu tuvieron este problema con virtualenv, pero no estoy usando virtualenv, y no estoy en Ubuntu. Mi apuesta es que de alguna manera mis variables PATH o PYTHONPATH o ENV no están configuradas correctamente, pero no tengo idea de cómo resolver esto.

Respuesta

16

Ok, lo descubrí. Tenía una tabla hash sucia en mi terminal.

Solución:

hash -r # will erase the currently used hash table 

Una vez hecho esto, me encontré con pitón de nuevo y me dieron:

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

Nota las diferentes versiones de Python (2.7.3 vs 2.7.1 anterior). Creo que esto se debe a una instalación anterior de Python 2.3 a través de un puerto Mac.

Perdón por la pregunta/respuesta rápida:/

tener una buena noche!
Arnaud

+0

Hola Amaud, ¿cómo encontraste esa solución? – CaptainCasey

+2

Honestamente estaba algo desesperado por cosas que podía probar (más de 2 horas para depurar un problema tan ridículo). Entonces este comando 'hash' vino a mi mente, lo intenté, funcionó. Me temo que no tengo una historia increíble para perseguir errores aquí:/ –

+0

¡Gracias por publicar esto! Estaba completamente perplejo por esto cuando ocurrió durante un proceso de compilación (no soy un tipo de Python, en cualquier caso), muy apreciado. :-) – Noldorin

Cuestiones relacionadas