如何有效地更改第 3 方 Django 应用程序?

How do I effectively make changes to a 3rd party django app?

我正在开发一个使用 django-leaflet 的 Django 应用程序,但这个问题适用于任何 python 库。我想更改一些 django-leaflet 代码,看看这些更改是否能解决我们遇到的问题。我有哪些选择?我是否需要在 django-leaflet 存储库中创建一个示例应用程序并在那里执行我的修改测试循环?还是我需要将单独重命名的 django-leaflet 版本上传到 pypi?

您可以修改您的第 3 方应用程序,方法是使用 pip uninstall 卸载它,然后将应用程序复制(或 git 克隆)到您的源代码树中。您可能需要暂时将 sys.path.append("./django-leaflet") 之类的行添加到 manage.py 文件中,以便第 3 方模块在范围内。

一旦您对您的更改感到满意,您可以将它们作为拉取请求发送给原作者或上传您自己的应用程序版本。

您始终可以直接在 site-packages/ 中更改代码,尽管这需要对细节有一定程度的关注,以防止搬起石头砸自己的脚。

除此之外,您还可以查看代码,并从包含第 3 方包 setup.py 的目录中执行

pip install -e .

(与 python setup.py develop 相似,但更好)

这会将 link 安装到 site-packages/ 中的源代码,因此您可以在第 3 方包中执行 modify/test 循环并在您自己的包中执行 运行 测试.

好处是您将拥有 VCS 支持您的更改。