我正在使用 Git 对 Django 项目进行版本控制。
尽可能将不属于项目本身但项目依赖的所有源代码作为 Git 子模块引入。它们位于一个lib
目录中,并且必须包含在 python 路径中。目录/文件布局如下所示:
.git
docs
lib
my_project
apps
static
templates
__init__.py
urls.py
manage.py
settings.py
.gitmodules
README
你会说,在 python 路径中包含库的最佳实践是什么?
我正在使用 virtualenv,所以我可以轻松地将库符号链接到 virtualenv 的站点包目录。但是,这会将 virtualenv 绑定到这个特定的项目。我的理解是 virtualenv 不应该依赖于我的文件。相反,我的文件应该依赖于 virtualenv。
我正在考虑为这个项目的不同本地副本使用相同的 virtualenv,但如果我这样做,我将失去这种能力。任何更好的想法如何解决这个问题?
更新:
最好的解决方案是让 pip 管理所有依赖项。
但是,这意味着不能使用 git 子模块,因为 pip还不能正确处理相对路径。因此,外部依赖项必须存在于 virtualenv 上(通常是:my_env/src/a_python_module)。
我仍然更喜欢使用子模块,让一些依赖项存在于我的项目树上。这对我来说更有意义,因为我已经需要分叉这些 repos 以更改其中的一些内容,并且将来可能需要进行更多更改。