我正在使用不同的.py文件(例如DisplayTools.py,CollectionTools.py ...)开发python函数,以便将它们作为工具导入更通用的文件Start.py中。如果所有文件都在同一目录中,它可以正常工作。我可以在Start.py“import DisplayTools”中说... 但是如何以更加项目的方式组织这些并且更加用户友好(他们只需要处理Start.py文件)。例如,有这样的文件组织:
项目/
Start.py
工具/
DisplayTools.py
CollectionTools.py
我已经阅读了__init__
文件的使用,但它们是如何工作的,这些文件放在哪里以及它们包含哪些文件?
如果您有任何帮助,可以通过这种方式组织我的项目。
非常感谢
答案 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
就像你以前一样。
现在,要将其添加到您的系统中,您需要打包它并使用安装脚本。您可以使用distutils
或setuptools
执行此操作,但最简单的现有说明可能是在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中,您只需导入其他脚本,就可以使用其中使用的函数而无需实际运行脚本。