django:pip install' app'安装到venv?

时间:2016-01-12 15:55:19

标签: django

我读到在git repo中使用venv是不合适的,应该由requirements.txt处理,但是我遇到了一个问题......

如果我在我的venv工作并且我做了一些app的pip安装,它会将它安装到venv site-packages中。如果我将它添加到installed_apps,它仍然可以工作,但是如果我在该目录中进行一些更改怎么办?然后git没有跟踪它们,当我试图推动它时我运气不好。

这样做的正确方法是什么?

编辑:我必须在这里遇到很大的错误沟通,所以让我用一个具体的例子来解释......

  1. 我跑... pip install django-messages

  2. 然后将django消息安装到我的venv中,我知道我可以运行... 本地... pip冻结> requirements.txt remote .... pip install -r requirements.txt

  3. 我的问题是我想对django-messages / templates或django-messages / views进行更改,从而使我的django消息偏离了可以从requirements.txt安装的消息

  4. 我不知道这些是如何保留在我的venv中而不是完全不可编辑/无法检查

2 个答案:

答案 0 :(得分:2)

这正是应该如何运作的。您可以通过requirements.txt跟踪安装的库,该文件与代码一起提交。您使用该文件生成您的venv,并在那里安装库。您不会在您的仓库中包含venv本身。

编辑您发现这一点的原因是您不应该这样做。不要改变第三方项目;你永远不需要。它们是可配置的。

如果您确实找到了需要修复的内容,请按照评论中的建议操作并分叉应用。但这绝对不是您需要一直做的事情,这表明您可能无法理解如何在自己的项目中配置应用程序。

例如,在自定义模板的情况下,您只需在自己的模板目录中定义模板,而不是编辑随应用程序提供的模板; Django做正确的事情并首先使用你的。

答案 1 :(得分:1)

从你的编辑看起来你想要做的就是分叉django-messages库。这意味着首先将它安装到站点包中是个坏主意,因为站点包不应该受版本控制或编辑,它被指定用于第三方软件。你有两个选择。您可以从GitHub获取源代码并将其放在Django应用程序可以找到它的位置(可能是您的python路径)并将此位置添加到git。也许甚至可以在github上创建自己的fork。第二个选项是使用pip install -e github.com/project让pip安装一个“可编辑”版本。第一种方式的优点是可以更好地控制您的更改,第二种方法的优点是可以使用pip管理源下载和安装。

话虽如此,你似乎对python环境有点新鲜。你真的你确定要自己做叉子吗?是否有一些您想要添加到消息库的功能?您知道可以覆盖每个模板而不更改实际的库代码吗?