2010-11-06 28 views
7

我环顾四周,所以我发现我的问题的答案不允许我解决它。Virtualenv不断加载在Windows上的全球网站包

我想用孤立的virtualenv环境,但由于种种原因,一直virtualenv中加载全球站点上的包,当Django的壳...

我试图清理PATH变量,直到只有c:\仍保留Python26 \ Scripts和c:\ Python26。然后我创造我的环境。

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

然后激活virtualenv。 PATH现在是(无关瓦尔报废):

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 

耶!没有全球网站包!然后到下一个。在命令提示符下,I型:

django-admin.py 

和它的作品!但是等等...我还没有安装Django。这怎么可能?

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

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

现在我启动django-admin.py壳

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

这怎么可能?

洞察力

虽然打字时的闪光,我突然明白了。 .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 

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

+0

*如何夫妇.py文件扩展我的virtualenv的python的可执行文件*请参阅[为什么不能在Windows准VIRTUALENV的.py/.pyw/.pyo与virtualenv中的Python版本的可执行文件/ pyc文件?(HTTP ://stackoverflow.com/q/4879624/95735)和[单CMD.EXE会话临时文件关联(http://stackoverflow.com/q/5583024/95735) – 2012-05-24 17:33:11

回答

11

有点额外的.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 %* 

并停用。蝙蝠

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

+1非常感谢你,没” t之前知道ftype。 – alexandrul 2012-02-16 07:20:27

+0

是否有以下行一些额外的\字符 “设置PYTHONPATH =%\ VIRTUAL_ENV%;%\ VIRTUAL_ENV%\ CONF;%\ VIRTUAL_ENV%\应用程序”?难道不应该阅读: “设置PYTHONPATH =%VIRTUAL_ENV%;%VIRTUAL_ENV%\ CONF;%VIRTUAL_ENV%\应用程序”? – Nathan 2012-08-27 15:15:39

+1

此外...在Windows批处理文件中,您需要转义ftype命令的%字符。 “FTYPE Python.File = C:\工具\ Python27 \ python.exe %% 1 %% *” – Nathan 2012-08-27 15:39:42

0

您可以制作一个.bat文件并在其中修改PATH和PYTHONPATH,然后从该.bat文件运行.py。 像这样的事情,我认为

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

Ofcourse,加上还有别的事情要你希望你的路径。

0

我有同样的使用cmd.exe的“拒绝访问”问题丹与m0nonoke的答案在我的Windows 7安装程序。

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

在工作目录下创建子目录配置。在这个目录下创建 启动文件为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 and Windows