组织具有简单依赖项的项目的正确方法是什么?

时间:2011-11-03 05:49:24

标签: python file-structure

在编写代码时,我经常遇到解决琐碎依赖问题的问题。例如,让我们采用我最近编写的memoizer对象的布局。我的目录结构如下所示:

memoizer/
  memoizer.py
  tests.py
  strategies/
    __init__.py
    perfect.py
    mru.py
    queue.py
README

具体问题是mru.py. mru.py包含一个MRU类,它使用queue.py中定义的Queue。很明显,队列不是记事本的策略,将它置于策略之下没有任何意义。

我有一个想法是设置我的代码看起来像这样:

memoizer/
  memoizer.py
  tests.py
  strategies/
    __init__.py
    perfect.py
    mru/
      __init__.py
      mru.py
      queue.py
README

这个设置的问题是现在用户必须知道mru在子包中。

另一个想法是安排这样的结构:

memoizer/
  memoizer.py
  tests.py
  strategies/
    __init__.py
    perfect.py
    mru.py
    dependencies/
      __init__.py
      queue.py
README

这可以解决我的问题,但直觉上似乎是错误的方法。

组织我的文件以解决这种不一致的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

我建议改变第二种结构:

memoizer/
  memoizer.py
  tests.py
  strategies/
    __init__.py
    perfect.py
    mru/
      __init__.py <- This is what used to be mru.py
      queue.py
README

然后用户可以import memoizer.strategies.mru

这是快速简便的方法。但是,您可以保留原始mru.py文件,并在__init__.py中公开其中的项目,如下所示:

import mru as _mru

SomeClass = _mru.SomeClass
# etc...