python - mkproject -t django 创建空目录而不是 django 项目
问题描述
我只是在学习如何使用virtualenvwrapper
,在浏览了文档之后,我发现该mkproject
命令可以创建一个新的virtualenv
和一个新的项目。该文档还建议使用-t
后跟模板名称的标志将创建一个项目。所以我认为这应该创建一个 django 项目:
mkproject -t django todolist
但是当我转到 my 时PROJECT_HOME
,我看到的只是一个名为 的空目录todolist
,这应该是一个 django 项目。
我很困惑。这甚至可能吗?因为mkproject
命令创建了一个全新的虚拟环境,没有安装 django。那么它如何尝试创建一个 django 项目呢?
请帮助我理解这一点。
解决方案
至于你的问题
那么它如何尝试创建一个 django 项目呢?
从pypivirtualenvwrapper.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
) 不存在,那么期望一个空目录是合理的。
推荐阅读
- php - Laravel - 授权补丁功能
- javascript - POST 未定义索引 $v3
- angular - Lotus Notes/Domino - 如何在 Angular 应用程序中获取“内容范围”
- c++ - 复制构造函数和复制赋值运算符是否应该具有相同的语句?
- hibernate - 多个实体一对多连接
- android - 我可以在 firebase 数据库安全规则中使用此声明吗?
- excel - Vba: 访问排序和双重过滤列的值时出现问题
- php - 使用 JSON 和 PHP 在子数组中查找最高值条目
- sql-server - Snippet 在 SSMS 中创建 Snippet
- c# - 如何引用嵌套类