Python ImportError не может импортировать urandom После обновления Ubuntu 12.04

52

Обновлен Ubuntu до Precise Pangolin (12.04), и Python Random теперь сломан... Я подозреваю, что другие вещи могут быть сломаны. Как исправить Python?

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

Увы, бедный Python! Я знал его, Рэндом, модуль бесконечного шутки, наиболее вероятного хаоса. Он перенес меня на его randint() тысячи раз, и теперь, как это было в моем рабочем пространстве! Мой обработчик исключений поднимается на него.

edit Запуск в virtualenv

  • 0
    @ Mark0978 Если у вас возникли проблемы с закрытием вопроса, задайте вопрос о переполнении стека . Не тролль вопросы и добавлять комментарии , потому что вам не нравится то , что произошло. Я снова открыл вопрос, основываясь на первом комментарии, но то, что вы делаете, не подходит для сайта. Пожалуйста, воздержитесь от этого в будущем, иначе могут быть предприняты дальнейшие действия модератора.
Теги:
random

5 ответов

45
Лучший ответ

Это ваша проблема?

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

Кажется, это вызвано запуском его в виртуальной среде, и есть работа вокруг.

Кстати, это был лучший результат в google.

  • 0
    Спасибо за ссылку. Он предлагает восстановить свою виртуальную среду. Тем не менее, у некоторых из нас есть несколько десятков virtualenv, у каждого из которых много зависимостей. Знаете ли вы, есть ли другие возможные решения, которые могут не требовать повторной сборки для каждого из них?
  • 0
    Я не понимаю, как это можно обойти. Если у каждой виртуальной машины есть свой локально установленный интерпретатор Python, как вы могли бы внести изменения в одну и исправить другие?
Показать ещё 3 комментария
35

У меня была такая же проблема при обновлении до 12.10, а при обновлении до 16.04 (в 16.04 сообщение было no module named datetime.)

Чтобы решить проблему, она просто запускала virtualenv по той же установке, и она работала. Дайте ему флаг --no-site-packages для сохранения ваших модулей:

$ 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

Так как у меня есть все мои virtualenvs в одном и том же каталоге, я просто побежал:

$ ls | xargs -I{} virtualenv  --no-site-packages {}
  • 1
    Это замечательно - однако учтите, что если у вас есть пользовательские параметры для ваших виртуальных сред (в частности, разные версии Python), приведенные выше могут удалить их
  • 0
    для ве в *; do python = "` {ls $ ve / bin / python; ls $ ve / bin / python *. * 2> / dev / null | sort;} | tail -n 1` "; python = `basename" $ python "`; virtualenv --python $ python $ ve; сделанный
Показать ещё 1 комментарий
7

Я получал эту же ошибку и исправил ее, просто перезапустив virtualenv (например, virtualenv --no-site-packages ~/venv/myvirtualenv/).

  • 0
    Да, это сработало.
1

Другое решение - удалить pip, если вы установили его с помощью apt-get используйте wget, чтобы получить его

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

а затем запустите

python get-pip.py или sudo python get-pip.py, если вы не вошли в систему с помощью root.

Это сработало для меня.

0

Хорошо, может быть, он просто не настроен? Проверьте этот сайт и посмотрите раздел Конфигурирование.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню