0

我对如何管理我的 django 应用程序非常迷茫。在大多数项目中,我使用标准版本的应用程序,但现在我发现自己分叉项目并同时处理它们。我如何在某些项目中使用我的分叉版本而在其他项目中使用 std 版本?例如:

我所有的 django 项目都在一个名为的目录中DJANGOPROJECTS,其结构如下:

DJANGO PROJECTS
-PROJECT A
-PROJECT B
-APP A (forked version)
-APP B (forked version)

SITEPACKAGES (on default python path)
-APP A 
-APP B

我想在 PROJECT A 和 PROJECT B 的 APP A 中使用 FORKED APP A(分叉版)。 PROJECT B 会照顾它自己。现在我如何让 PROJECT A 使用 FORKED APP A?

如果我将 APP A(分叉版本)放在每个项目的 virualenv 中,我将不得不在每次发生更改时更新所有项目。如果我将它保留在 virtualenv 之外,当我对分叉的应用程序进行本地更改(不执行 git push)时,所有使用它的项目都会立即获得更改。

4

2 回答 2

1

每当我希望它们使用共享版本时,我都会通过在我的虚拟环境中使用指向应用程序的符号链接来解决这个问题。

于 2013-03-19T23:51:53.490 回答
0

我刚刚找到了一个更好的方法。设置符号链接有点痛苦!原来 virtualenv 有一个内置的方法来做到这一点。

在以下位置修改要用于该环境的包的路径:

yourEnv/Lib/site-packages/packagename.egg.link file. 

如果您使用的是easy-install,则在以下位置修改包路径:

yourEnv/Lib/site-packages/easy-install.pth

例如:

如果您希望 PROJECT-A 使用位于您的 github 目录中的名为 APP-A 的应用程序。找到上面提到的文件并修改路径:

c:\users\someuser\documents\github\PROJECT-A\src\APP-A

至:

c:\users\someuser\documents\github\APP-A

现在 PROJECT-A 将使用工作存储库中的 APP-A 版本,而不是 virtualenv 中的版本。您现在可以使用 APP-A 存储库,并且更改将自动与 PROJECT-A 集成,而无需推送或拉取更改。

于 2013-05-06T19:25:30.627 回答