2

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

  • 项目/

    启动.py

    • 工具/

      显示工具.py

      收集工具.py

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

如果您有一些帮助,请以这种方式组织我的项目。

非常感谢

4

2 回答 2

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

就像你以前一样。

现在,要将其安装到您的系统中,您需要将其打包并使用安装脚本。您可以使用Zed Shaw 的Learn Python The Hard Way 练习 46distutils来执行此操作,或者setuptools可能是现有最简单的关于如何执行此操作的描述。您真的可以按照那里的描述复制/粘贴这些文件,并最终得到如下目录结构:

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 中的命名约定是使用蛇形大小写文件和函数名。因此DisplayTools.py,与其重命名,不如将其重命名display_tools.py。CamelCase 通常只保留给类名。

于 2012-10-06T12:16:39.510 回答
0

Well for starters i would simply change my files to have a set of functions and some main code since the files could also be executed.

For example:

if __name__ == "__main__":
    dosomething()

Then in the main, you simply import the other scripts and you can use the functions used there without actually running the script.

于 2012-10-06T12:45:13.200 回答