我将分享一个我们在工作中遇到的问题。我们有一个代码回购协议,文件散布在各地(目前正试图让每个人都清理)。问题是,对于创建的每个文件,我们都必须创建一个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的任何地方使用
目前没有回答
相关问题 更多 >
编程相关推荐