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

2024-09-20 22:54:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我将分享一个我们在工作中遇到的问题。我们有一个代码回购协议,文件散布在各地(目前正试图让每个人都清理)。问题是,对于创建的每个文件,我们都必须创建一个RELATIVE_REPO_PATH(RRP),以便在repo中导入其他文件。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

以下是我们目前在工作中所做的

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)

正如您所看到的,无论您离回购协议的根有多深,您都需要或多或少地添加os.path.dirname。我们已经用while循环尝试过了,但是,我们的很多文件相互导入,这是一种混乱

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

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


Tags: 文件path代码py协议initos地方

热门问题