Python 将另一个项目的子目录添加为子树
我有一个git项目(一个Django应用程序),我想添加另一个应用程序(https://github.com/lambdafu/django-south)作为子树。问题是,第三方存储库在其根目录中有一个额外的目录层。我不想搞乱python的加载路径、添加符号链接或为导入语句添加额外的前缀。有没有办法在我的项目中将Python 将另一个项目的子目录添加为子树,python,django,git,Python,Django,Git,我有一个git项目(一个Django应用程序),我想添加另一个应用程序(https://github.com/lambdafu/django-south)作为子树。问题是,第三方存储库在其根目录中有一个额外的目录层。我不想搞乱python的加载路径、添加符号链接或为导入语句添加额外的前缀。有没有办法在我的项目中将south子目录作为子树获取?让我们调用south项目的根目录repo 您可以通过添加一个\uu init\uuuuuuuuupy,然后将repo.south添加到已安装的应用程序中,使
south
子目录作为子树获取?让我们调用south项目的根目录repo
您可以通过添加一个\uu init\uuuuuuuuupy
,然后将repo.south
添加到已安装的应用程序中,使repo
成为python模块
(借用自)
您还可以添加
repo
,以便在项目的特定修订版中维护south的特定修订版。您是否尝试将south作为依赖项?因为听起来就是这样。如果是这样的话,有一种比在项目树中包含目录更好的方法。这太乱了,我们有工具来解决
你用什么?怎么样如果是这样,pip安装-e git+https://github.com/lambdafu/django-south#egg=south
你就可以走了。要在安装后更新到最新的HEAD,只需添加-U
标志。您甚至可以将需求保存在req文件中(pip freeze>requirements.txt
,pip install-r requirements.txt
),以将它们保存在版本控制中
如果没有,为什么不呢?对,这是我不想做的“为导入语句添加额外前缀”选项。它还意味着在子目录中维护一个
\uuuu init\uuuu.py
文件。如果我使用子树路径,可能不会导致合并冲突,但是如果我使用子模块,我不知道维护它的方便方法。啊,对。因此,唯一的解决方案是根本避免更改目录结构。据我所知,没有办法克隆不到整个git回购。我的猜测是,符号链接最终将是最简单的。祝你好运Ohhhhh——今天我了解了。你是否试图将South作为项目的依赖项?repo有一个setup.py-除非你有很好的理由需要源代码,否则你应该安装repo并在需要新头时进行更新。我实际上在寻找如何将repo的子目录添加为子树的答案。有人知道吗?我通常使用pip,但在本例中,我将部署到一个带有偏执系统管理员的服务器上,该管理员不允许传出连接或添加系统范围的python包。其想法是将我的所有依赖项都放在源代码树中,这样就只需要git推送ssh了。nodejs处理模块的方式。也许我可以让他安装pip并使用它的捆绑功能来解决这个问题。你可以简单地从现有的virtualenv(tar+zip)复制环境,然后在服务器上扩展它。不需要外部连接。完全正确。这意味着也不会安装系统范围的软件包。您只需要在用户空间中为运行Python应用程序的任何用户安装virtualenv。