Django和'virtualenv' - 适当的项目结构

时间:2016-03-11 09:27:10

标签: python django virtualenv

我陷入困境,建立了本地开发项目结构。这是我的设置:

  • Python 2.7
  • Django 1.9
  • Mac OSX El Capitan 10.11
  • MySQL 5.7

我犯了一个“错误”,即全局设置项目而不是虚拟环境(使用“pip”安装/>中的所有内容)。阅读this article后,我仍然没有完成所有步骤。 这是否正确:

  1. 我在'/>'
  2. 中安装了全局python(pip,virtualenv)
  3. 然后我去了我的项目所在的位置,例如/users/user/documents/projects/project1来自'project1'我使用'virtualenv'为这个项目创建一个虚拟环境(这会创建/virtual env/文件夹中的/project1/文件夹
  4. 激活此虚拟环境并pip install django
  5. 然后从新创建的/virtual env/文件夹startproject内创建/project1/文件夹中的另一个/virtual env/文件夹
  6. 虚拟环境仍在当前shell会话中激活,我继续创建我的脚本,站点和应用程序文件
  7. 广告2。应该将virtualenv文件夹置于主“project1”文件夹中,还是应该包含它?

    广告4。这是正确的还是我可以在不首先激活虚拟环境的情况下执行此操作?

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

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

2 个答案:

答案 0 :(得分:14)

常见的解决方案是将虚拟环境和项目保存在单独的文件夹中,例如虚拟环境为/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. 在此环境pip install django中安装django及其他任何内容,或者更好地使用requirements.txt文件来跟踪所有项目依赖项。
  6. 停用环境,运行deactivate
  7. 现在,当您想要使用创建的虚拟环境运行项目时,在控制台窗口中运行/users/myUser/.venvs/project1_venv/bin/activate,然后运行python /users/myUser/documents/projects/project1/manage.py runserver。您可以从任何目录激活venv,它为当前shell窗口激活,激活后该窗口中的任何python ...运行将使用此虚拟环境。激活脚本以某种方式修改环境变量,以便使用来自venv的解释器和库而不是全局的解释器和库。 (虽然也有选择使用全球的。)

答案 1 :(得分:11)

存储虚拟环境的位置并不重要。找到适合您的项目结构。

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

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

您可能会发现virtualenvwrapper有用。它有一些工具可以轻松地在虚拟环境之间创建和切换。它将您的所有虚拟环境存储在一个地方,因此您不必担心放置它们的位置。

  

这是正确的还是可以在不首先激活虚拟环境的情况下进行?

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