Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Windows上的django-admin.py和virtualenv问题_Python_Windows_Django_Django Admin_Virtualenv - Fatal编程技术网

Python Windows上的django-admin.py和virtualenv问题

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

在我的系统中,在系统范围内安装了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 "import django; print django.get_version()"
1.2.4
(venv) C:\> django-admin.py --version
1.2.3
我的问题是:

  • 如果当前的Python(虚拟)环境安装了django 1.2.4,为什么django-admin.py报告1.2.3版
  • 当venv处于活动状态时,如何自动使用Django的1.2.4 Django-admin.py
  • 其他信息:

    • 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的解决方案不起作用,但你的解决方案起作用了。非常感谢。