【问题标题】:Python ImportError cannot import urandom Since Ubuntu 12.04 upgradePython ImportError 无法导入 urandom 自 Ubuntu 12.04 升级
【发布时间】:2012-04-28 19:28:25
【问题描述】:

将 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() 上生了我 一千次,现在它在我的工作空间里是多么可恶! 我的 Exception Handler 应运而生。

edit 在 vi​​rtualenv 中运行

【问题讨论】:

  • @Mark0978 如果您在结束问题时遇到问题,请在Meta Stack Overflow 上提问。不要因为您不喜欢发生的事情而不要提出问题并添加 cmets。我已经根据第一条评论重新打开了这个问题,但是您所做的不适合该网站。以后请不要这样做,否则可能会采取进一步的主持人行动。

标签: python ubuntu random


【解决方案1】:

这是你的问题吗?

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

似乎是在虚拟环境中运行造成的,有变通办法。

顺便说一句,这是谷歌的最高结果。

【讨论】:

  • 感谢您的链接。它建议重建一个人的虚拟环境。然而,我们中的一些人有几十个 virtualenvs,每个都有很多依赖项。您知道是否有任何其他可能的解决方案可能不需要为每个解决方案重新构建?
  • 我很困惑如何解决这个问题。如果每个虚拟机都有自己的本地安装的 python 解释器,你怎么可能对其中一个进行更改并修复其他的?
  • 正如 Adam Victor 在这里写的:bugs.launchpad.net/ubuntu/+source/python-defaults/+bug/989856 你可以试试 $: virtualenv ~/path/to/virtualenv 或者当你在 virtualenvs 目录 $: ls | xargs -I{} virtualenv {}
  • 具有讽刺意味的是,您的答案现在(对我来说,无论如何)是 Google 的最高结果! :-)
  • 请注意,Google 会根据各种因素向不同用户显示 different results对你来说最好的结果可能不是对我来说最好的结果。事实上,你的最高结果可能不会出现在我的结果的第一页。
【解决方案2】:

我在升级到 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 {}

【讨论】:

  • 这很好 - 但是请注意,如果您的虚拟环境有自定义选项(特别是不同的 python 版本),上面可能会删除它们
  • for ve in * ; do python="`{ ls $ve/bin/python ; ls $ve/bin/python*.* 2>/dev/null | sort ; } | tail -n 1`"; python=`basename "$python"`; virtualenv --python $python $ve;完成
  • 在 10.04 和 python 2.6 venv 上为我工作,用于广泛的 django 应用程序 venv。我什至不必在新的(刷新的)venv 上执行pip install -r requirements/base.txt,因为所有的 python 模块都已安装。
【解决方案3】:

我遇到了同样的错误并通过重新运行 virtualenv 来修复它(例如,virtualenv --no-site-packages ~/venv/myvirtualenv/)。

【讨论】:

    【解决方案4】:

    如果您使用 apt-get 安装 pip,另一种解决方案是删除它 使用wget 获取它

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

    然后运行

    python get-pip.pysudo python get-pip.py 如果您没有使用 root 登录。

    这对我有用。

    【讨论】:

      【解决方案5】:

      好的,也许只是没有配置?检查this 站点,并查看配置 部分。

      【讨论】:

        猜你喜欢
        • 2012-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-28
        相关资源
        最近更新 更多