Virtualenv不断加载在Windows上的全球网站包

我环顾四周,我发现的问题的答案还没有让我解决它。

我想使用孤立的virtualenv环境,但由于某种原因,virtualenv不断加载全球网站包,当在Django的壳…

我试图清理PATHvariables,直到只剩下c:\ Python26 \ Scripts和c:\ Python26。 然后我创造我的环境。

virtualenv --distribute --no-site-packages myproject 

然后我激活virtualenv。 现在PATH(无关的variables):

 PATH=E:\Development\django_projects\myproject\Scripts;C:\Panda3D-1.7.0\python;C:\Panda3D-1.7.0\bin;c:\python26\Scripts; 

PYTHONPATH=C:\Panda3D-1.7.0\

到现在为止还挺好。 我启动python …

 >>> import django Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named django 

让我们试试一个模块,我确定在我的c:\ python site-packages目录下。

 >>> import BeautifulSoup Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named BeautifulSoup 

好极了! 没有全球网站包! 然后到下一个。 在命令提示符下,我键入:

 django-admin.py 

它的工作原理! 但是等等…我还没有安装Django。 这怎么可能?

在此之后,它变得更加怪异…我首先将这些添加到virtualenv的activate.bat脚本,以便Django可以find我的设置。

 set PYTHONPATH=E:\Development\django_projects\myproject\ set DJANGO_SETTINGS_MODULE=settings.development 

现在我启动django-admin.py shell和

 In [1]: import BeautifulSoup In [2]: BeautifulSoup.__file__ Out[2]: 'C:\\Python26\\lib\\site-packages\\BeautifulSoup.pyc' 

这怎么可能?

洞察力的闪光

当input这个,我突然得到它。 .py是一个与我的c:\ python26 \ python.exe可执行文件相连的文件扩展名,而不是virtualenv!

 python manage.py Traceback (most recent call last): File "manage.py", line 2, in <module> from django.core.management import execute_manager ImportError: No module named django.core.management 

嘿。 任何人有任何想法如何将.py文件扩展名耦合到我的virtualenv的python可执行文件,而不是系统定义的python可执行文件?

一点点额外的.bat hackery可以很容易地解决这个问题。 我的标准补充activate.bat是:

 REM custom venv settings set PYTHONPATH=%\VIRTUAL_ENV%;%\VIRTUAL_ENV%\conf;%\VIRTUAL_ENV%\apps set DJANGO_SETTINGS_MODULE=settings ftype Python.File=%VIRTUAL_ENV%\Scripts\python.exe %1 %* 

并停用.bat

 REM restore ftype ftype Python.File=C:\tools\Python27\python.exe %1 %* 

你可以创建一个.bat文件并修改PATH和PYTHONPATH,然后从那个.bat文件运行.py。 这样的事情我想

set PATH=C:\Python26; python myfile.py

当然,添加任何你想要的路径。

我和Dan在使用cmd.exe进行Windows 7安装时遇到了“拒绝访问”一样的问题。

但我发现这个工作围绕使用替换外壳TCC / LE和一个自定义的启动文件…

在工作目录下创建子目录config。 在这个目录下创建TCC / LE的启动文件,名为tcstart.btm

 @echo off rem Override system python binding to handle virtualenvironments set .py;.pyc=python.exe 

现在在桌面上创建(复制)TCC / LE快捷方式并适当地重新命名。 打开快捷方式属性并添加到目标“C:\ django \ config \ tcstart.btm”。 你可能要设置开始到有用的东西,如C:\ django

本指南中有关安装Django和Windows的解决方案。