Python 从子包访问包根目录
我正在寻找访问子包根目录的最佳方法,以便检索公共配置文件(在我的例子中是JSON文件) 例如,目录结构可能如下所示:Python 从子包访问包根目录,python,configuration,package,setup.py,Python,Configuration,Package,Setup.py,我正在寻找访问子包根目录的最佳方法,以便检索公共配置文件(在我的例子中是JSON文件) 例如,目录结构可能如下所示: | README | setup.py | proj_name | __init__.py | pack_01 | __init__.py | file_01.py | file_02.py | pack_02 | __init__.py | file_03.py | file_04.py
| README
| setup.py
| proj_name
| __init__.py
| pack_01
| __init__.py
| file_01.py
| file_02.py
| pack_02
| __init__.py
| file_03.py
| file_04.py
| conf
| conf_01.json
| conf_02.json
| conf_03.json
在本例中,包配置文件位于proj_name/conf
目录中
当使用诸如导入项目名称.pack\u 01.file\u 01之类的命令导入sayfile\u 01
时,属性\uu文件\uuuu
将指向proj\u名称/pack\u 01/file\u 01.py
,并且需要一行,例如root\u dir=dirname(dirname(\uu file\uu))
;但是,这意味着在编写子包时需要了解目录结构
是否有办法使用变量(如\uuuuu root\u package\uuuu
或类似的东西)访问根包(本例中为proj_name)及其目录?在python中实现这一点的最整洁的方法是什么?当使用setup.py实用程序构建鸡蛋时,该方法仍然有效吗
提前谢谢你 为什么不将
conf
作为一个模块,并在其中包含解释JSON文件的代码?然后您可以轻松地导入
结果;通过Python对象而不是文本文件公开它们。os.path.dirname(proj_name.\uu文件)
应该可以做到。@johnsharpe很好。。。目前,我已经在另一个子包中实现了加载和解析功能;此外,在安装项目时,我希望能够将配置文件安装在单独的目录中(如果仅在用户主目录中安装,请说~/.package.d/config
)@tdelaney:是的,但这会迫使我添加一行,例如导入项目名称
?