我使用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
答案 0 :(得分:3)
我建议在你的情况下从头开始重新安装Python和virtualenv,然后重新创建环境。
pip
(。{3}})。pip
链接到上面的Python安装(检查pip -V
的输出,它应该包含正确的系统范围的Python路径。)pip install virtualenv
。在新环境中重新安装旧环境中安装的所有模块。
这可能是一个棘手的问题。
requirements.txt
然后,需要所有包裹
你已全部设定(pip install -r requirements.txt
应该这样做。)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