Python中的项目结构与文件实现

2 投票
3 回答
635 浏览
提问于 2025-04-16 12:01

我在整理我的Python项目结构时遇到了一些困惑。我看过jcalderone: Python项目的文件系统结构,也研究过CouchApp的源代码,但还是觉得很迷茫。

我明白文件应该怎么组织,但不太明白这样做的原因。如果有人能详细给我讲解一下,或者解释一下该怎么设置一个基本的Python项目,以及这些文件之间是如何相互作用的,我会非常感激。

我觉得这对那些来自其他编程语言,比如C、C++、Erlang,或者从未编程过的人来说,肯定会有帮助。

3 个回答

0

让我们逐条来解释一下这些规则:

1) 你应该有一个根目录,并给它起个好名字。如果你把你的包打包成一个压缩文件(tarball),那么在根目录下放文件是不太好的做法。我每次解压缩东西,看到当前文件夹里乱七八糟的东西,心里都特别不爽。

2) 你应该把可执行文件和模块分开。它们是不同的东西。如果你打算使用distutils(一个帮助打包的工具),这样做会让你的生活更轻松。

3) 如果你只有一个模块,上面的理由就不适用了。这样你可以简化你的文件结构。

4) 单元测试应该和它的包紧密相关。但它们并不是包的一部分,所以这是创建一个子包的完美机会。

0

我对Python不是很精通,但从第一个链接中的这些话来看,如果你考虑到以下几点,就会觉得很有道理:

  • 这个项目可能涉及到计算机或程序
  • 这个项目可能还有其他人参与

如果你能保持一致的命名和文件结构,无论是人还是计算机,都能更好地理解你这个复杂的程序。

这涉及到一些话题,比如:测试、构建、部署、可重用性、搜索、结构、以及一致性等等……

标准化可以让不同的部分更好地连接在一起。

1

给你的目录起个和项目相关的名字。当你发布版本时,应该在名字后面加上版本号,比如:Twisted-2.5。

我不明白为什么这点不清楚。这看起来很明显。所有东西都应该放在一个目录里。

为什么东西必须放在一个目录里?因为大家都这么说,所以就是这样。

创建一个名为 Twisted/bin 的目录,把你的可执行文件放在里面。

这是 Linux 的工作方式。可执行文件都放在一个 bin 目录里。这样做可以方便地把这个特定的目录放到你的 PATH 环境变量中。

如果你的项目可以用一个 Python 源文件来表示,那就把它放到这个目录里,并给它起个和项目相关的名字。例如,Twisted/twisted.py。

没错。你会有 /Twisted、/Twisted/bin 和 /Twisted/twisted.py,里面有你实际运行的代码。那你还想把它放在哪里呢?

这没有“为什么”。你还能把它放在哪里呢?

如果你需要多个源文件,那就创建一个包(Twisted/twisted/,里面有一个空的 Twisted/twisted/init.py),把你的源文件放进去。例如,Twisted/twisted/internet.py。

这就是 Python 包的工作方式。它们是带有 __init__.py 文件的目录。教程对此解释得很清楚。

把你的单元测试放在包的子包里,路径是 Twisted/twisted/test/。

你还想把测试放在哪里?说真的,这没有“为什么”。没有更合理的选择。

在 Twisted 目录下添加 README 和 setup.py 文件,分别用来解释和安装你的软件。

没错。你还想把它们放在哪里?再说一次,这没有“为什么”。它们放在顶层目录里,因为——好吧——这就是目录的用途。它包含文件。

撰写回答