Django 和 'virtualenv' - 正确的项目结构

Django and 'virtualenv' - proper project structure

我在设置本地开发项目结构时遇到了难题。这是我的设置:

我 "Mistake" 在全局而不是在虚拟环境中设置我的项目(使用“pip”在 /> 中安装所有内容)。阅读 this article 后,我仍然没有掌握所有步骤。 这是否正确:

  1. 我安装全局python('/>' 中的pip、virtualenv)
  2. 然后我会转到我的项目所在的位置,例如 /users/user/documents/projects/project1 从内部 'project1' 我使用 'virtualenv' 创建该项目的虚拟环境(这会在 /project1/ 文件夹中创建一个 /virtual env/ 文件夹)
  3. 激活此虚拟环境并pip install django
  4. 然后在新创建的 /virtual env/ 文件夹中 startproject/virtual env/ 文件夹
  5. 中创建另一个 /project1/ 文件夹
  6. 虚拟环境在当前 shell 会话中仍处于激活状态,我继续创建我的脚本、站点和应用程序文件

广告 2. virtualenv 文件夹应该在主 "project1" 文件夹内还是应该包含它?

广告 4. 这是正确的还是我可以不先激活虚拟环境就可以做到?

我的结构目前看起来像这样(从根开始:/users/myUser/documents/projects/):

/project1/
    /website1/
        /static/
        /templates/
        __init.py__
        settings.py
        urls.py
        views.py
        wsgi.py

将虚拟环境存储在何处并不重要。找到适合您的项目结构。

我不会将虚拟环境放入项目中,因为您不应该将其签入版本控制(尽管您可以使用忽略)。通常,您只需签入需求文件,即可重新创建环境。

我不会将项目放在虚拟环境中,因为虚拟环境是一次性的。您可能希望在不破坏项目的情况下破坏虚拟环境。此外,您可能希望 运行 在不同的虚拟环境下使用相同的项目,例如升级前在 Django 1.8 和 1.9 上测试您的代码。

您可能会发现 virtualenvwrapper 有用。它有一些工具可以很容易地创建和切换虚拟环境。它将您所有的虚拟环境存储在一个地方,因此您不必担心将它们放在哪里。

Is this correct or can I do it without activating virtual environment first?

您应该在创建/处理项目之前激活虚拟环境并安装 django。

常见的解决方案是将虚拟环境和项目保存在单独的文件夹中,例如虚拟环境有 /users/myUser/.venvs,项目有 /users/myUser/documents/projects/。在其他方面,您自己做得非常好。所以:

  1. 您需要安装全局 Python 和 virtualenv。
  2. 为虚拟环境创建目录,例如运行 mkdir /users/myUser/.venvs.
  3. 为您的项目创建虚拟环境,virtualenv /users/myUser/.venvs/project1_venv
  4. 激活当前 shell 会话的环境 /users/myUser/.venvs/project1_venv/bin/activate
  5. 在此环境中安装 django 和其他任何东西 pip install django,或者更好地使用 requirements.txt 文件来跟踪所有项目依赖项。
  6. 停用环境,运行 deactivate

现在,当您想要 运行 您的项目使用创建的虚拟环境时,在您的控制台中 window 运行 /users/myUser/.venvs/project1_venv/bin/activate 然后 python /users/myUser/documents/projects/project1/manage.py runserver。您可以从任何目录激活 venv,它为当前 shell window 激活,激活后 window 中的任何 python ... 运行 将使用此虚拟环境。激活脚本以某种方式修改环境变量,以便使用来自 venv 的解释器和库而不是全局的。 (尽管也有使用全局选项的选项。)