2012-04-28 12 views
54

Ubuntu actualizado a Precise Pangolin (12.04), y el Random de Python ahora está roto ... Sospecho que otras cosas podrían estar rotas también. ¿Cómo arreglo Python?Python ImportError no puede importar urandom Desde la actualización de Ubuntu 12.04

File "/usr/lib/python2.7/random.py", line 47, in <module> 
    from os import urandom as _urandom 
ImportError: cannot import name urandom 

Alas, poor Python! Lo conocí, Random, un módulo de infinita broma, del caos más probable. Él me ha aburrido en su randint() un mil veces, y ahora ¡cuánto aborrecido está en mi espacio de trabajo! Mi controlador de excepciones aumenta.

edición que se ejecutan en virtualenv

+0

@ Mark0978 Si tiene problemas con el cierre de una pregunta, pregunte en [meta]. No * troll preguntas y agregar comentarios porque no te gusta lo que sucedió. He reabierto la pregunta según el primer comentario, pero lo que estás haciendo no es apropiado para el sitio. Por favor, absténgase de eso en el futuro, o se pueden tomar más medidas de moderación. – casperOne

Respuesta

45

¿Este es tu problema?

https://bugs.launchpad.net/ubuntu/+source/python-defaults/+bug/989856

parece ser causada por ejecutarlo en un entorno virtual, y hay un trabajo alrededor.

BTW este fue el resultado principal en Google.

+0

Gracias por el enlace. Sugiere reconstruir los entornos virtuales de uno. Sin embargo, algunos de nosotros tenemos algunas docenas de virtualenvs, cada uno con muchas dependencias. ¿Sabes si hay alguna otra solución posible que no requiera esta reconstrucción para cada uno? –

+0

Estoy confundido sobre cómo sería posible evitarlo.Si cada máquina virtual tiene su propio intérprete de Python instalado localmente, ¿cómo podría hacer un cambio en uno y reparar los otros? –

+4

Como Adam Victor escribió aquí: https://bugs.launchpad.net/ubuntu/+source/python-defaults/+bug/989856 Puede probar $: virtualenv ~/path/to/virtualenv o cuando esté en virtualenvs dir $: ls | xargs -I {} virtualenv {} – lechup

0

bien, tal vez simplemente no es configurado? Consulte el sitio this y consulte la sección Configuración de.

7

Estaba recibiendo el mismo error y lo solucioné simplemente al volver a ejecutar virtualenv (por ejemplo, virtualenv --no-site-packages ~/venv/myvirtualenv/).

+0

Sí, funcionó. – Paolo

36

que tenían el mismo problema al actualizar a 12.10, y cuando se actualiza a 16.04 (En el 16.04, el mensaje era no module named datetime.)

para resolverlo acaba de ejecutar virtualenv sobre la misma instalación y ha funcionado. Darle la bandera --no-site-packages para preservar sus módulos:

$ virtualenv --no-site-packages ~/lib/virtualenv/netunong 
Overwriting /home/adam/lib/virtualenv/netunong/lib/python2.7/site.py with new content 
New python executable in /home/adam/lib/virtualenv/netunong/bin/python 
Installing distribute.....<skippping dots, of course>.......done. 
Installing pip................done. 
Overwriting /home/adam/lib/virtualenv/netunong/bin/activate with new content 
Overwriting /home/adam/lib/virtualenv/netunong/bin/activate_this.py with new content 

Ya que tengo todos mis virtualenvs en el mismo directorio, sólo corrió:

$ ls | xargs -I{} virtualenv --no-site-packages {} 
+1

Eso es genial; sin embargo, tenga en cuenta que si tiene opciones personalizadas para sus entornos virtuales (notablemente diferentes versiones de python), lo anterior puede eliminarlos –

+0

por ve *; do python = "\' {ls $ ve/bin/python; ls $ ve/bin/python *. * 2>/dev/null | sort;} | tail -n 1 \ '"; python = \ 'nombrebase" $ python "\'; virtualenv --python $ python $ ve; hecho –

+0

funcionó para mí en 10.04 y un python 2.6 venv para una amplia aplicación de django venv. Ni siquiera tuve que hacer una 'pip install -r requirements/base.txt' en el nuevo (renovado) venv porque todos los módulos de python todavía estaban instalados. – hobs

1

Otra solución es eliminar pip si se ha instalado con apt-get usar wget a buscarla

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py 

y luego ejecutar

python get-pip.py o sudo python get-pip.py si no ha iniciado sesión con la raíz.

Esto funcionó para mí.

Cuestiones relacionadas