首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:如何处理lib的配置文件(依赖项)

Python:如何处理lib的配置文件(依赖项)
EN

Stack Overflow用户
提问于 2014-05-24 18:44:11
回答 1查看 639关注 0票数 1

上下文:

我目前正在开发一个由3个不同的Python项目组成的产品:P1D1D2

D1D2是独立的库(也是由我开发的),应该通过setuptools安装。P1是主要的项目,它依赖于D1D2。库D1D2需要配置文件来设置一些自定义参数,比如config_d1.jsonconfig_d2.json

问题:

由于P1需要自定义D1D2的配置,所以我想知道设置这些文件位置的最佳方法。

当前解决方案:

我正在考虑使用D1_CONF_HOMED2_CONF_HOME等环境变量以及D1D2内部的环境变量来设置配置文件的位置。

代码语言:javascript
复制
D1_CONF_HOME = os.getenv('D1_CONF_HOME', '')
SETTINGS_LOCATION = path.join(D1_CONF_HOME, 'config_d1.json')

但是我想知道这是否真的是毕达通的方式(我来自Java世界,我们通常是这样做的)。

EN

回答 1

Stack Overflow用户

发布于 2014-05-25 00:42:53

我不知道它有多高,但我就是这样做的。在setup.py中,我有:

代码语言:javascript
复制
setup(name='pkg-name',
     ...
     packages=['pkg-name'],
     package_dir={'pkg-name':'pkg-dir'},
     package_data={'pkg-name':['config/cfg1.json', 'config/cfg1.json']},
     ...

请注意,“config”是项目中“pkg-dir”的一个子文件夹。

您需要做的最后一件事是编写将找到包和配置路径的函数。如果在库中实现,而不是在项目P1中实现它,这些函数将只在P1中工作。在我的例子中,我已经在我的库中创建了一个帮助模块,并将它们放到这个模块中,这样我就可以从我的项目P1中创建一个Helper.get_config_dir()。

代码语言:javascript
复制
def get_pkg_dir():
  f = __file__
  for _ in range(100)
    f = os.path.abspath(os.path.dirname(f))
    if re.search(r'pkg-name$', f) is not None:
      break;
  return f

def get_config_dir():
  return os.path.abspath(os.path.join(get_pkg_dir(), 'config')

我认为这种方法比处理env变量更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23848492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档