将另一个项目的子目录作为子树添加

3 投票
2 回答
511 浏览
提问于 2025-04-17 12:14

我有一个git项目(一个Django应用),我想把另一个应用(https://github.com/lambdafu/django-south)作为一个子树添加进来。问题是这个第三方的代码库在根目录下多了一层文件夹。我不想去搞什么python的加载路径,也不想添加符号链接或者在导入语句前加额外的前缀。有没有办法把south这个子文件夹作为子树放到我的项目里呢?

2 个回答

1

你是不是想把South作为一个依赖项加入进来?听起来是这个意思。如果是这样的话,其实有更好的方法,不用把目录直接放在你的项目里。这样做会显得很乱,而且我们有工具可以帮助你。

你有在用pip吗?还有virtualenv呢?如果有的话,你可以用这个命令:pip install -e git+https://github.com/lambdafu/django-south#egg=south,这样就可以了。安装后如果想更新到最新版本,只需要加上-U这个选项就行了。你甚至可以把你的依赖项放在一个req文件里(用pip freeze > requirements.txt来生成,之后用pip install -r requirements.txt来安装),这样可以方便管理版本。

如果没有用这些工具,那为什么呢?

1

我们把南方项目的根目录叫做 repo

你可以通过添加一个 __init__.py 文件来把 repo 变成一个 Python 模块,然后把 repo.south 加入到已安装的应用程序中。

(这个内容是从 这里借来的)

你还可以把 repo 添加为一个 git 子模块,这样你就可以同时维护南方项目和你自己项目的特定版本。

撰写回答