Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将另一个项目的子目录添加为子树_Python_Django_Git - Fatal编程技术网

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添加到已安装的应用程序中,使

我有一个git项目(一个Django应用程序),我想添加另一个应用程序(https://github.com/lambdafu/django-south)作为子树。问题是,第三方存储库在其根目录中有一个额外的目录层。我不想搞乱python的加载路径、添加符号链接或为导入语句添加额外的前缀。有没有办法在我的项目中将
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。