处理python项目和文件组织

时间:2012-10-06 11:48:06

标签: python

我正在使用不同的.py文件(例如DisplayTools.py,CollectionTools.py ...)开发python函数,以便将它们作为工具导入更通用的文件Start.py中。如果所有文件都在同一目录中,它可以正常工作。我可以在Start.py“import DisplayTools”中说... 但是如何以更加项目的方式组织这些并且更加用户友好(他们只需要处理Start.py文件)。例如,有这样的文件组织:

  • 项目/

    Start.py

    • 工具/

      DisplayTools.py

      CollectionTools.py

我已经阅读了__init__文件的使用,但它们是如何工作的,这些文件放在哪里以及它们包含哪些文件?

如果您有任何帮助,可以通过这种方式组织我的项目。

非常感谢

2 个答案:

答案 0 :(得分:5)

我会稍微重构您的代码组织,并为您的顶级目录提供更具描述性的名称。今天,我选择happy_bananas。所以,假设您按照以下方式组织文件:

happy_bananas
   start.py
   DisplayTools.py
   CollectionTools.py

然后您需要做的就是添加一个空的__init__.py文件,您可以像使用任何其他软件包一样使用它,例如:

happy_bananas
   __init__.py
   start.py
   DisplayTools.py
   CollectionTools.py

现在,如果你能做到:

from happy_bananas import DisplayTools

就像你以前一样。

现在,要将其添加到您的系统中,您需要打包它并使用安装脚本。您可以使用distutilssetuptools执行此操作,但最简单的现有说明可能是在Zed Shaw的Learn Python The Hard Way Exercise 46中。你真的可以按照那里的描述复制/粘贴这些文件,最终得到如下目录结构:

happy_bananas
   setup.py
   tests
       test_happy_bananas.py
   happy_bananas
       __init__.py
       start.py
       DisplayTools.py
       .
       .

然后,当您编写了安装脚本时,您可以进入您的文件夹并运行python setup.py install(或python setup.py develop)并在任何文件中import happy_bananas

另外,python中的命名约定是将snakecase用于文件和函数名称。因此,不是DisplayTools.py,而是将其重命名为display_tools.py,而不是{{1}}。 CamelCase通常仅为类名保留。

答案 1 :(得分:0)

对于初学者来说,我只需将我的文件更改为一组函数和一些主要代码,因为文件也可以执行。

例如:

if __name__ == "__main__":
    dosomething()

然后在main中,您只需导入其他脚本,就可以使用其中使用的函数而无需实际运行脚本。