【问题标题】:mkproject -t django creates empty directory not a django projectmkproject -t django 创建空目录而不是 django 项目
【发布时间】:2018-08-29 13:52:44
【问题描述】:

我只是在学习如何使用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 项目呢?

请帮助我理解这一点。

【问题讨论】:

  • 你安装了virtualenvwrapper.django 吗?
  • 没有。我必须手动安装吗?
  • 我应该将它安装在全局 python 领域(在任何 virtualenv 之外)吗?

标签: python django virtualenv virtualenvwrapper


【解决方案1】:

至于你的问题

那么它怎么会尝试创建一个 django 项目呢?

来自virtualenvwrapper.djangopypi page

virtualenvwrapper.django 是 virtualenvwrapper 的模板插件 自动创建新的 Django 项目。当与 mkproject 一起使用时,它 将 Django 安装到新的 virtualenv 中,然后运行 ​​django-admin.py 到 创建一个新的项目骨架。

至于你得到一个空目录的原因,如果你看一下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) 不存在,那么预期一个空目录是合理的。

【讨论】:

  • 你能告诉我如何删除空项目和环境todolist吗?
  • 只需在您的$PROJECT_HOMEWORKON_HOME 中找到它们并删除文件夹即可。
  • 希望得到命令。但是运行virtualenvwrapper 会列出所有可用命令,其中mkvirtualenvrmvirtualenv,但mkproject 没有rmproject。好的,然后手动删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
  • 2015-12-09
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多