Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.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_Configuration_Package_Setup.py - Fatal编程技术网

Python 从子包访问包根目录

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

我正在寻找访问子包根目录的最佳方法,以便检索公共配置文件(在我的例子中是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
   | conf
      | conf_01.json
      | conf_02.json
      | conf_03.json
在本例中,包配置文件位于
proj_name/conf
目录中

当使用诸如导入项目名称.pack\u 01.file\u 01之类的命令导入say
file\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:是的,但这会迫使我添加一行,例如
导入项目名称