Python - 包和设置文件

时间:2011-11-15 11:36:41

标签: python

我有一个python包,需要从我的项目目录中提取设置,以下是我的项目当前的结构:

~/Project/bin/mypackage
    - package files

~/Project/myproject/
    - project files
    - start.py
    - settings.py

我想这与Django的结构类似,你的项目目录中有一个settings.py文件,它以某种方式被Python目录中的Django系统包引用。

所以,如果我像这样运行start.py:

python ~/Project/myproject/start.py

..和start.py导入并利用'mypackage'包,有没有什么方法可以从包中引用start.py本地的settings.py文件?我是否必须在start.py中加载设置文件并将值存储在全局?有谁知道这有可能吗?

2 个答案:

答案 0 :(得分:2)

包含用于调用python解释器的脚本的目录将添加到PYTHONPATH。它可以在sys.path[0]获得。见http://docs.python.org/library/sys.html#sys.path

这意味着只需settings mypackage.mymodule就可以import settings提供{{1}}。

但是,我会考虑在start.py中处理设置的加载并构建你的应用程序,以便将设置对象(可能只是一个字典)传递给它。

答案 1 :(得分:2)

我看到它的方式有几种选择:

  1. 查找设置并从当前工作目录或根据环境变量确定它们。这是使用DJANGO_SETTINGS_MODULE和PYTHONPATH的“django方式”。这很好,很神奇,当它工作时很不方便,当你从另一个目录运行时不是这样。

  2. 依赖于模块搜索路径,该路径将包含调用包的目录。既简单又简单,但设置会因来电者而异。例如,我在mypackage中所需要的只是:

      

    导入设置

  3. 将设置作为变量传递