mkproject -t django создает пустой каталог, а не проект django - PullRequest
0 голосов
/ 29 августа 2018

Я только учусь, как использовать virtualenvwrapper, и после изучения документации я обнаружил, что команда mkproject может создать новый virtualenv и новый проект. Документация также предполагает, что использование флага -t с именем шаблона создаст проект . Поэтому я подумал, что это должно создать проект Django:

mkproject -t django todolist

Но когда я перехожу к своему PROJECT_HOME, все, что я вижу, это пустой каталог с именем todolist, который, как ожидали, будет проектом django.

Я в замешательстве. Это вообще возможно? Потому что команда mkproject создает совершенно новую виртуальную среду, где django не установлен. Так как же он может попытаться создать проект django?

Пожалуйста, помогите мне понять это.

1 Ответ

0 голосов
/ 29 августа 2018

Что касается вашего вопроса

Так как же он может попытаться создать проект django?

Из страницы pypi из virtualenvwrapper.django:

virtualenvwrapper.django - это плагин шаблона для virtualenvwrapper для создавать новые проекты Django автоматически. Когда используется с mkproject, он устанавливает Django в новый virtualenv, затем запускает django-admin.py для создать новый скелет проекта.

Что касается причины, по которой вы получаете пустой каталог, если вы посмотрите на исходный код virtualenvwrapper, аргумент -t mkproject отображается на

# ...
i=$(( $i + 1 ));
templates="$templates ${in_args[$i]}";;
# ... 
for t in $templates
do
    echo
    echo "Applying template $t"
    # For some reason zsh insists on prefixing the template
    # names with a space, so strip them out before passing
    # the value to the hook loader.
    virtualenvwrapper_run_hook --name $(echo $t | sed 's/^ //') "project.template" "$envname" "$PROJECT_HOME/$envname"
done

Так что все, что он делает, это запускает ловушку после создания вашего проекта. Так что, если хука (virtualenvwrapper.django) не существует, то разумно ожидать пустой каталог.

...