mkproject -t django 创建空目录而不是 django 项目

mkproject -t django creates empty directory not a django project

我刚刚学习如何使用 virtualenvwrapper,在阅读文档后我发现 mkproject 命令可以创建一个新的 virtualenv 和一个新项目。文档 also suggests that using a -t flag followed by template name would create a project。所以我认为这应该创建一个 django 项目:

mkproject -t django todolist

但是当我转到 PROJECT_HOME 时,我看到的只是一个名为 todolist 的空目录,它应该是一个 django 项目。

我很困惑。这可能吗?因为 mkproject 命令创建了一个全新的虚拟环境,其中没有安装 django。那么它如何尝试创建一个 Django 项目呢?

请帮助我理解这一点。

关于你的问题

So how could it attempt to create a django project?

来自 virtualenvwrapper.djangopypi page

virtualenvwrapper.django is a template plugin for virtualenvwrapper to create new Django projects automatically. When used with mkproject, it installs Django into the new virtualenv then runs django-admin.py to create a new project skeleton.

至于你得到一个空目录的原因,如果你看一下virtualenvwrapper的源代码,mkproject-t参数映射到

# ...
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) 不存在,那么期望一个空目录是合理的。