Python Windows上的django-admin.py和virtualenv问题
在我的系统中,在系统范围内安装了Django 1.2.3:Python Windows上的django-admin.py和virtualenv问题,python,windows,django,django-admin,virtualenv,Python,Windows,Django,Django Admin,Virtualenv,在我的系统中,在系统范围内安装了Django 1.2.3: C:\>python -c "import django; print django.get_version()" 1.2.3 C:\>django-admin.py --version 1.2.3 然后在C:\dev中有一个名为venv的虚拟环境,我在其中安装了Django 1.2.4: C:\> dev\venv\Scripts\activate.bat (venv) C:\> python -c "imp
C:\>python -c "import django; print django.get_version()"
1.2.3
C:\>django-admin.py --version
1.2.3
然后在C:\dev中有一个名为venv的虚拟环境,我在其中安装了Django 1.2.4:
C:\> dev\venv\Scripts\activate.bat
(venv) C:\> python -c "import django; print django.get_version()"
1.2.4
(venv) C:\> django-admin.py --version
1.2.3
我的问题是:
- virtualenv版本:1.5.1,Python版本2.7
- 用于创建venv的命令:
C:\dev\>virtualenv--无站点包venv
(venv)C:\>echo%PATH%
C:\dev\venv\Scripts。。。其他路径…
- venv中django-admin.py的shebang:
#!C:\dev\Scripts\python.exe
希望您能提供帮助,非常感谢。我在linux上遇到了类似的问题,当时我试图将一个已经存在的django项目与后来安装的virtualenv一起使用 是否有可能django 1.2.4的django-admin.py在您的路径上是而不是,但django 1.2.3安装的django-admin.py是 这可以解释你从
C:\> dev\venv\Scripts\activate.bat
(venv) C:\> python -c "import django; print django.get_version()"
1.2.4
(venv) C:\> django-admin.py --version
1.2.3
因为python
命令位于virtualenv的路径上,但是django admin.py
文件可能不在
至于你的第二个问题(假设我上面的猜测是正确的):sym将django admin.py
文件链接到你的C:\dev\venv\Scripts
目录,尽管我不确定这在windows上是如何工作的(你在使用Cygwin吗?)
当然,您可以随时将其称为
python C:\path\to\django admin.py
(因为调用了正确的python版本),但这当然需要大量键入。这是因为您的windows将.py
扩展与全局安装的python.exe
关联。因此,当您键入django admin.py
时,即使您在virtualenv中,也会调用全局python,然后它会在自己的站点包中找到您的全局django安装。尝试python django admin.py
来规避这种关联。正如shanyu已经解释过的,这是因为对python安装可执行文件而不是virtualenv进行了*.py文件关联。然而,为了以不同的方式回答您的第二个问题,我通过在我的virtualenv的Scripts
目录中创建一个django admin.bat
解决了这个问题。它的内容
@echo off
python %VIRTUAL_ENV%\Scripts\django-admin.py %*
现在您可以使用django admin startproject。激活环境时,virtualenv应该已经正确设置了必要的
路径
和虚拟环境变量。我使用了Philip Nelson的解决方案,但必须在我的文件名中添加空格引号:
python“%VIRTUAL\u ENV%\Scripts\django admin.py”%*我刚刚键入了django admin,没有.py文件扩展名,为我工作。我必须在我的项目中将“global python.exe”指向我的virtualenv,所以我创建了自己的activate.cmd
set THE_PATH=c:\my-envs\my-specific-env\Scripts
ftype Python.File="%THE_PATH%\python.exe" %%1 %%*
%THE_PATH%\activate.bat
它使用windows命令“ftype”更改了文件类型关联。您好,我在linux上遇到了类似的问题,当时我试图将一个已经存在的django项目与后来安装的virtualenv一起使用。您好,谢谢您的回答。我在普通窗户上(没有Cygwin)。django-admin.py位于系统路径上,如我的原始帖子中附加信息的第3点所示。C:\dev\venv\Scripts作为第一个路径应该覆盖系统范围的Scripts目录(但似乎不是这样!)嗨,ok是shebang行#!C:\dev\Scripts\python
指向正确的python版本?似乎它可能需要#!C:\dev\venv\Scripts\python
,但我在这里猜测。你是对的,应该是#!C:\dev\venv\Scripts\python,很抱歉这是一个转录错误。顺便说一句,山雨对这个问题给出了现实的解释-(啊,这是个坏消息,因为Windows阻止我按自己喜欢的方式做事。顺便说一句,不奇怪。谢谢你的解释。shnyu的解决方案不起作用,但你的解决方案起作用了。非常感谢。