ImportError:无法导入名称“urandom”

时间:2012-11-02 11:26:54

标签: python django virtualenv

当我在运行虚拟环境(runserver)时尝试workon django1.2任何项目时出现此错误

错误:

ImportError: cannot import name "urandom"

在研究问题后,我发现this

  

警告Python错误修正版本2.6.8,2.7.3,3.1.5和3.2.3包含一个更改,导致“import random”失败,“不能   导入名称urandom“在Unix主机上创建的任何virtualenv上   早期发布的Python 2.6 / 2.7 / 3.1 / 3.2,   如果底层系统Python升级。这是因为virtualenv使用系统Python的标准库,但是   包含自己的Python解释器副本,   因此升级到系统Python会导致Python解释器版本与标准版本不匹配   图书馆。   可以通过删除$ ENV / bin / python并使用升级的Python在同一目标目录上重新运行virtualenv来修复它。

但是正在运行ENV/bin/python给了我:

bash: ENV/bin/python: No file or directory of this type

我在哪里可以找到我的virtualen目录?

我对virtualenvs知之甚少,所以请耐心等待我

感谢

1 个答案:

答案 0 :(得分:32)

您必须重新创建虚拟环境。

我的猜测是以下情况发生了:

  1. 您创建了一个virtualenv
  2. 在稍后的某个时间点,系统的Python安装已使用urandom安全错误修正更新。
  3. 你的virtualenv(从之前的Python版本创建)不再起作用(由于你在问题中提到的问题)
  4. 最简单的解决方法是删除虚拟环境并创建一个新环境:

    $ rm -r VIRTUALENVDIR
    $ virtualenv VIRTUALENVDIR
    $ . VIRTUALENVDIR/bin/activate
    
    # then pip install any required packages, if your project has a requirements.txt file,
    # this is simply:
    $ pip install -r requirements.txt
    
    # otherwise, you will have to install each package
    $ pip install packagename
    $ pip install packagename==version