如何在删除相关的python解释器后重建virtualenvs

时间:2014-09-19 18:30:35

标签: python django virtualenv

我使用win7组织了以下目录结构的许多django项目(我在命令行使用GIT_BASH / mingw):

envs--r1--project1
        --project2
        --Include
        --Library
        --Scripts--python.exe
python275--

这里的想法是不同的项目有一个共同的环境,我可以使用以下方法从每个项目根目录激活该环境:

$ source ../Scripts/activate

我不确切地知道它是怎么发生的但事实证明解释器(上面列为python.exe)以某种方式链接到上面的第二个python文件夹。

我删除了python275文件夹(AAHH !!),没有意识到它的重要性,导致:

Traceback (most recent call last): File "C:\envs\r1\lib\site.py", line 703, in   main() File "C:\envs\r1\lib\site.py", line 692, in main aliasmbcs() File "C:\envs\r1\lib\site.py", line 515, in aliasmbcs import locale, codecs File "C:\envs\r1\lib\locale.py", line 19, in   import functools ImportError: No module named functools

我重新安装了正确的python文件夹,但错误仍然存​​在。谁能告诉我如何重建virtualenvs所以我可以回到它的方式?

编辑:

(r1)
/C/envs/r1/Scripts
$ import reload(functools)
sh: syntax error near unexpected token `('
(r1)
/C/envs/r1/Scripts
$ python.exe import reload(functools)
sh: syntax error near unexpected token `('
(r1)
/C/envs/r1/Scripts
$ python.exe reload functools        
Traceback (most recent call last):
  File "C:\envs\r1\lib\site.py", line 703, in <module>
    main()
  File "C:\envs\r1\lib\site.py", line 692, in main
    aliasmbcs()
  File "C:\envs\r1\lib\site.py", line 515, in aliasmbcs
    import locale, codecs
  File "C:\envs\r1\lib\locale.py", line 19, in <module>
    import functools
ImportError: No module named functools


(r1)
/C/envs/r1/Scripts
$ reload(functools)
sh: syntax error near unexpected token `('
(r1)
/C/envs/r1/Scripts
$ python.exe reload(functools)
sh: syntax error near unexpected token `('
(r1)


/C/envs/r1/Scripts
$ python.exe  test.py
Traceback (most recent call last):
  File "f:\envs\r1\lib\site.py", line 703, in <module>
    main()
  File "f:\envs\r1\lib\site.py", line 692, in main
    aliasmbcs()
  File "f:\envs\r1\lib\site.py", line 515, in aliasmbcs
    import locale, codecs
  File "f:\envs\r1\lib\locale.py", line 19, in <module>
    import functools
ImportError: No module named functools

2 个答案:

答案 0 :(得分:3)

我建议在你的情况下从头开始重新安装Python和virtualenv,然后重新创建环境。

  • 确保您的系统上安装了Python 2.7.5。
  • 确保您安装了pip(。{3}})。
  • 确保pip链接到上面的Python安装(检查pip -V的输出,它应该包含正确的系统范围的Python路径。)
  • 使用pip install virtualenv
  • 彻底安装virtualenv
  • 为您的项目创建并激活环境。
  • 在新环境中重新安装旧环境中安装的所有模块。

    这可能是一个棘手的问题。

    • 如果您有最新的文件,例如requirements.txt 然后,需要所有包裹 你已全部设定(pip install -r requirements.txt应该这样做。)
    • 如果您没有列出要求,或者它们不是最新的,那么 手动检查您在旧环境中安装了哪些软件包。 为此,您应该在旧的virtualenv中找到site-packages目录 (应该在Library下)并查看其中的内容。 您在site-packages目录中识别的每个非系统包 您安装到新环境中(通常使用pip install但是 一些包可能有自定义说明。)

这就是我碰巧发生的事情。我无法简单地重建环境,所以我重新安装了清洁工作。

答案 1 :(得分:2)

取自其他post。您可以将virtualenv与python版本相关联。

指示要与标志-p或--python一起使用的Python解释器(例如--python = python2.5)

    virtualenv -p /usr/bin/python2.6 <path/to/new/virtualenv/>

但这只适用于创建新环境。您需要访问旧的virtualenv并执行:

     pip freeze > requirements.txt

文件requirements.txt将包含您在旧虚拟环境中安装的所有应用及其各自的版本。现在,从您创建的新环境中运行:

     pip install -r requirements.txt

您应该激活虚拟环境。

     $ source /yourvirtualenvpath/bin/activate

     $ pip freeze > /home/user/requirements.txt

     $ deactivate 

     $ source /yourNEWvirtualenvpath/bin/activate

     $ pip install -r /home/user/requirements.txt