django-admin.py и проблема virtualenv в Windows
в моей системе установлен Django 1.2.3 общесистемный:
C:>python -c "import django; print django.get_version()"
1.2.3
C:>django-admin.py --version
1.2.3
тогда есть виртуальная среда под названием venv in C:dev где я установил Django 1.2.4:
C:> devvenvScriptsactivate.bat
(venv) C:> python -c "import django; print django.get_version()"
1.2.4
(venv) C:> django-admin.py --version
1.2.3
мои вопросы:
- почему django-admin.py отчеты версии 1.2.3, если текущая (виртуальная) среда Python имеет django 1.2.4 установлен?
- как я могу использовать 1.2.4 Django django-admin.py автоматически, когда venv is активен?
дополнительная информация:
- версия virtualenv: 1.5.1, Python версии 2.7
- команда, используемая для создания venv:
C:dev> virtualenv --no-site-packages venv
-
(venv) C:> echo %PATH%
C:devvenvScripts; ...other paths...
shebang django-admin.py в venv:
#!C:devScriptspython.exe
надеюсь, что вы можете помочь, большое спасибо.
6 ответов
как шанью уже объяснил, это из-за *.ассоциации файлов py, сделанные для вашего исполняемого файла установки Python вместо virtualenv. Однако, чтобы ответить на ваш второй вопрос по-другому, я решил эту проблему, создав django-admin.bat
в . Его содержимое?
@echo off
python %VIRTUAL_ENV%\Scripts\django-admin.py %*
теперь вы можете использовать django-admin startproject <project_name>
. Необходимое PATH
и VIRTUAL_ENV
переменные среды уже должны были быть правильно установлены virtualenv при активации окружающая среда.
Я должен был указать " глобальный 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.
возможно ли, что django-admin.py из django 1.2.4 является не на вашем пути, но это django-admin.py из вашей установки django 1.2.3?
это объясняет ваш выход из
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-link в своем C:\dev\venv\Scripts
каталог, хотя я не уверен, как это работает в windows (вы используете Cygwin?).
конечно, вы всегда можете назвать это как python C:\path\to\django-admin.py
(так как называется правильная версия python), но, конечно, это много ввода.
Я использовал решение Филипа Нельсона, но должен был добавить кавычки для пробелов в моем имени файла:
python "%VIRTUAL_ENV%\Scripts\django-admin.py"%*