具有C扩展模块的Python项目的目录布局

Kam*_*iel 6 c python module

我们组织中有许多混合Python/C的项目.目前,我们正在尝试为我们的项目标准化目录布局,并试图提出一个方便的方案.争论的一个方面是将C扩展模块放在树中的位置.

我们正在抛弃几个选项(相对于项目根目录):

./src/package/subpackage/module.c
Run Code Online (Sandbox Code Playgroud)

或者与包树中的python模块一起:

./package/subpackage/module.c
Run Code Online (Sandbox Code Playgroud)

或者在src子包中的目录中:

./package/subpackage/src/module.c
Run Code Online (Sandbox Code Playgroud)

将它们排除在包目录之外的一个原因可能是因为它会导致混乱,特别是如果有其他.c和.h文件本身不是模块但仍需要编译.同样在"集成"方案中,您如何处理多个模块使用的标头和文件?把它们放在一个共同的顶级目录中?

我有兴趣知道其他人正在使用什么,或者是否有任何已建立的最佳实践.

Ale*_*lli 1

我认为Python标准库的布局是一个合理的例子:在trunk下,它基本上是 SVN 存储库的根(net of Branches &c),该Modules目录有很多.c.h文件,该Lib目录有很多.py文件。

在我自己的项目中,我倾向于类似地划分源代码(实际上,如果我有 Cython 或 Pyrex 的,或者 SWIG 等,我倾向于有其他目录用于细分),尽管具有不同的目录名称(我承认我没有目录名称本身的一致规则,我也没有听说过此类名称的良好指导原则)。