2012-04-28 43 views
54

将Ubuntu升级到Precise Pangolin(12.04),并且Python的Random现在已损坏......我怀疑其他事情也可能被破坏。我如何修复Python?Python ImportError无法导入urandom自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 

唉,可怜的Python!我认识他,随机,一个无限的模块,最可能的混乱。他在我的工作空间里对我的工作空间感到厌恶了! 我的异常处理程序在它上升。

编辑运行中的virtualenv

+0

@ Mark0978如果您对问题的结束有问题,请咨询[meta]。做*不*问题和增加评论,因为你不喜欢发生的事情。我已经根据第一条评论重新提出了这个问题,但是您所做的并不适合该网站。请日后避免这种情况,否则可能会采取进一步的主持人行动。 – casperOne 2012-11-16 20:26:32

回答

45

这是你的问题?

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

似乎通过在虚拟环境中运行它引起的,并且有一个变通。

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

+0

谢谢你的链接。它建议重建一个人的虚拟环境。然而,我们中的一些人有几十个虚拟世界,每个虚拟世界都有很多依赖关系。你知道是否还有其他可能的解决方案可能不需要为每个解决方案重新构建? – 2012-05-01 21:10:29

+0

我很困惑如何能够解决这个问题。如果每个虚拟机都有自己的本地安装的Python解释器,那么您如何才能对其中一个进行修改并修复其他的? – 2012-05-02 02:51:02

+4

正如Adam Victor在这里写的:https://bugs.launchpad.net/ubuntu/+source/python-defaults/+bug/989856你可以试试$:virtualenv〜/ path/to/virtualenv 或者你在virtualenvs时dir $:ls | xargs -I {} virtualenv {} – lechup 2012-05-03 15:09:58

0

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

7

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

+0

是的,它的工作。 – Paolo 2012-04-30 15:47:49

36

我升级到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版本),上面可能会删除它们 – 2012-07-03 10:51:22

+0

for * 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; 完成 – 2012-07-03 11:14:50

+0

在10.04上为我工作,为广泛的django应用程序venv编写了python 2.6 venv。我甚至没有必要在新的(刷新的)venv上执行'pip install -r requirements/base.txt',因为所有的python模块仍然安装。 – hobs 2012-10-05 17:49:14

1

另一种方案是,如果你安装它来除去PIP用apt-get的 使用wget去取

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

,然后运行

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

这对我有效。

相关问题