Python 相对回购路径在_init__.py中?

Python 相对回购路径在_init__.py中?,python,repository,organization,Python,Repository,Organization,我将分享一个我们在工作中遇到的问题。我们有一个代码回购协议,文件散布在各地(目前正试图让每个人都清理)。问题是,对于创建的每个文件,我们都必须创建一个相对报告路径(RRP),以便在报告中导入其他文件。repo由mercurial托管,所有用户在其本地机器上都有repo的克隆。他们每个人都有能力根据需要推拉更新。这意味着RRP不能在任何地方硬编码。下面我将展示一个我们的结构示例,并展示我们目前如何获得RRP 我们结构的一个例子 . ├── __init__.py ├── misc_

我将分享一个我们在工作中遇到的问题。我们有一个代码回购协议,文件散布在各地(目前正试图让每个人都清理)。问题是,对于创建的每个文件,我们都必须创建一个
相对报告路径
(RRP),以便在报告中导入其他文件。repo由mercurial托管,所有用户在其本地机器上都有repo的克隆。他们每个人都有能力根据需要推拉更新。这意味着RRP不能在任何地方硬编码。下面我将展示一个我们的结构示例,并展示我们目前如何获得RRP

我们结构的一个例子

. ├── __init__.py ├── misc_functions │   ├── __init__.py │   ├── myTest.py │   └── __pycache__ │   └── __init__.cpython-37.pyc └── Test ├── __init__.py ├── pythonfile1 (copy).py └── pythonfile1.py 正如您所看到的,无论您离回购协议的根有多深,您都需要或多或少地添加os.path.dirname。我们已经用while循环尝试过了,但是,我们的很多文件相互导入,这是一种混乱

有没有办法只在顶层init.py或所有init.py文件中添加一个简单的代码片段,这样就可以消除此代码的不断复制和粘贴


澄清一下,我们所做的一切都很好。想知道是否有一种方法可以在init.py中设置全局RRP,该方法可以在任何有init.py的地方使用。

因此,如果您在mytest.py中,您在从测试导入pythonfile执行时遇到问题?我不确定我是否理解您的问题。所以,是的,假设我在pythonfile1.py中,我需要从myTest.py导入一些内容。目前,我们在文件的主部分中执行相对路径。一切正常,但我想知道我们是否可以在init.py文件中添加一些代码,这样我们就可以设置一个全局相对路径,这样我们就不必将相同的代码复制并粘贴到所有文件中。
import os
import sys
if not hasattr(sys, 'frozen'):
    RELATIVE_REPO_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
    if __name__ == '__main__':
        sys.path.append(RELATIVE_REPO_PATH)
        sys.path.pop(0)
else:
    RELATIVE_REPO_PATH = os.path.dirname(sys.executable)