54

将 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!我认识他,Random,一个无限玩笑的模块,很可能是混乱的。他在他的 randint() 上已经让我厌烦了一千次了,现在在我的工作空间里是多么可恶!我的异常处理程序随之而来。

编辑在 virtualenv 中运行

4

5 回答 5

44

这是你的问题吗?

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

似乎是在虚拟环境中运行它引起的,并且有一个解决方法。

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

于 2012-04-28T19:42:16.247 回答
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 {}
于 2012-05-02T13:57:59.697 回答
7

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

于 2012-04-30T04:24:03.360 回答
1

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

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

然后运行

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

这对我有用。

于 2014-10-02T11:35:13.317 回答
0

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

于 2012-04-28T19:42:08.453 回答