什么是Python应用程序的最佳项目结构?
假设你想用Python开发一个不重要的终端用户桌面(而不是web)应用程序。 构建项目文件夹层次结构的最佳方式是什么?
理想的功能是便于维护,IDE友好,适用于源代码控制分支/合并以及易于生成安装包。
尤其是:
不要太重要。 无论什么让你快乐将工作。 没有太多愚蠢的规则,因为Python项目可能很简单。
/scripts
或/bin
这种命令行界面的东西 /tests
你的测试 /lib
为您的C语言库 /doc
用于大多数文档 /apidoc
为Epydoc生成的API文档。 顶层目录可以包含README,Config和什么。
硬选择是否使用/src
树。 Python没有像Java或C所具有的/src
, /lib
和/bin
之间的区别。
由于某些顶级/src
目录有些人认为没有意义,因此您的顶级目录可以是应用程序的顶级体系结构。
/foo
/bar
/baz
我建议将所有这些放在“我的产品名称”目录下。 所以,如果你正在编写一个名为quux
的应用程序,那么包含所有这些东西的目录就是/quux
。
然后,另一个项目的PYTHONPATH
可以包含/path/to/quux/foo
来重用QUUX.foo
模块。
就我而言,由于我使用Komodo Edit,因此我的IDE cuft是一个.KPF文件。 实际上我把它放在顶层/quux
目录中,并且省略了将其添加到SVN。
根据Jean-Paul Calderone的Python项目的文件系统结构:
Project/
|-- bin/
| |-- project
|
|-- project/
| |-- test/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |-- main.py
|
|-- setup.py
|-- README
这篇由Jean-Paul Calderone撰写的博客文章通常作为Freenode上#python的答案给出。
Python项目的文件系统结构
做:
Twisted
。 当你发布版本时,你应该包含一个版本号后缀: Twisted-2.5
。 Twisted/bin
目录,并将可执行文件放在那里(如果有的话)。 不要给他们一个.py
扩展名,即使他们是Python源文件。 除了导入和调用项目中其他位置定义的主函数之外,不要在其中放置任何代码。 (轻微皱纹:因为在Windows上,解释器是通过文件扩展名选择的,所以你的Windows用户确实需要.py扩展名。所以,当你为Windows打包时,你可能想添加它。不幸的是,并不容易的distutils技巧我知道这个过程是自动化的,考虑到在POSIX上.py扩展名只是一个疣,而在Windows上缺乏是一个实际的错误,如果你的用户库包含Windows用户,你可能想选择仅仅是.py无处不在。) Twisted/twisted.py
。 如果您需要多个源文件,请创建一个包( Twisted/twisted/
,带有一个空的Twisted/twisted/__init__.py
)并将源文件放入其中。 例如, Twisted/twisted/internet.py
。 Twisted/twisted/test/
。 当然,使它成为Twisted/twisted/test/__init__.py
。 将测试放在Twisted/twisted/test/test_internet.py
。 Twisted/README
和Twisted/setup.py
来解释和安装你的软件。 别:
src
或lib
的目录中。 这使得无需安装就很难运行。 __init__.py
的包,然后将所有代码放入__init__.py
。 只需制作一个模块而不是一个软件包,这很简单。 上一篇: What is the best project structure for a Python application?
下一篇: Python GUI2Exe Application Standalone Build (Using Py2Exe)