Handlng python项目和文件组织

use*_*727 2 python

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

  • 项目/

    Start.py

    • 工具/

      DisplayTools.py

      CollectionTools.py

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

如果你有一些帮助,可以通过这种方式组织我的项目.

非常感谢

Jef*_*ner 5

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

happy_bananas
   start.py
   DisplayTools.py
   CollectionTools.py
Run Code Online (Sandbox Code Playgroud)

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

happy_bananas
   __init__.py
   start.py
   DisplayTools.py
   CollectionTools.py
Run Code Online (Sandbox Code Playgroud)

现在,如果你能做到:

from happy_bananas import DisplayTools

就像你以前一样.

现在,要将其添加到您的系统中,您需要打包它并使用安装脚本.你可以使用distutils或者setuptools也许最简单的现有描述如何做到这一点是在Zed Shaw的学习Python艰难的方式练习46.你真的可以按照那里的描述复制/粘贴这些文件,最后得到如下目录结构:

happy_bananas
   setup.py
   tests
       test_happy_bananas.py
   happy_bananas
       __init__.py
       start.py
       DisplayTools.py
       .
       .
Run Code Online (Sandbox Code Playgroud)

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

另外,python中的命名约定是将snakecase用于文件和函数名称.因此DisplayTools.py,重新命名它会更好display_tools.py.CamelCase通常仅为类名保留.