当前位置:  开发笔记 > 编程语言 > 正文

Django和VirtualEnv开发/部署最佳实践

如何解决《Django和VirtualEnv开发/部署最佳实践》经验,为你挑选了1个好方法。

只是好奇人们如何将他们的Django项目与virtualenv结合使用

更具体地说,您如何使您的生产virtualenv与您的开发机器正确同步?

我使用git for scm但是我没有我的virtualenv在git repo中 - 我应该,还是最好使用pip冻结然后使用冻结输出在服务器上重新创建环境?(如果你这样做,请你描述一下步骤 - 我发现关于解冻过程的文档很少 - 有pip install -r freeze_output.txt可能吗?)



1> brianz..:

我只是使用pip,Fabric和git在工作中设置了这样的东西.流程基本上是这样的,并且从这个脚本中大量借用:

    在我们的源代码树中,我们维护一个requirements.txt文件.我们将手动维护.

    当我们执行新版本时,Fabric脚本会根据我们传递的任何树形结构创建存档.

    Fabric将为我们正在部署的内容找到SHA git log -1 --format=format:%h TREEISH.这给了我们SHA_OF_THE_RELEASE

    Fabric将获取我们的需求文件的最后一个SHA git log -1 --format=format:%h SHA_OF_THE_RELEASE requirements.txt.这会抛出哈希的短版本,就像1d02afc这个特定版本的文件的SHA 一样.

    然后,Fabric脚本将查看我们的virtualenvs存储在远程主机上的目录.

      如果没有名为的目录1d02afc,则会创建一个新的virtualenv并进行设置pip install -E /path/to/venv/1d02afc -r /path/to/requirements.txt

      如果现有的path/to/venv/1d02afc,什么都不做

这个小小的神奇之处在于传递你想要git的任何树,并让它进行包装(来自Fabric).通过使用git archive my-branch,git archive 1d02afc或任何其他,我保证让安装在我的远程机器右侧的包.

我走了这条路线,因为如果包裹在发布之间没有变化,我真的不希望有额外的虚拟主义者浮动.我也不喜欢在我自己的源代码树中拥有我依赖的实际包的想法.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有