【问题标题】:Where do I put my cython files in a python distribution?我在哪里将我的 cython 文件放在 python 发行版中?
【发布时间】:2013-05-29 01:57:32
【问题描述】:

我编写并维护了一个用于量子化学计算的 Python 库,名为 PyQuante。我有一个相当标准的 Python 发行版,主目录中有一个 setup.py 文件,一个名为“PyQuante”的子目录包含所有 Python 模块,一个名为“Src”的子目录包含 C 扩展模块的源代码。

我很幸运地让一些用户捐赠了使用 Cython 的代码,而我以前没有使用过 Cython,因为我在 PyQuante 或 Pyrex 出现之前就开始了它。根据我的建议,他们将代码放到 Src 子目录中,因为这是所有 C 代码所在的位置。

但是,查看生成扩展的代码,我想知道是否应该简单地将代码放在 Python 分支的子目录中。因此我的问题是:

包含 Python 和 Cython 源文件的 Python 发行版的目录结构的最佳做法是什么?

  • 您是否将 .pyx 文件与 .py 文件放在同一目录中?
  • 您是否将它们放在包含 .py 文件的目录的子目录中?
  • 您是否将它们放在 .py 父目录的子目录中?

我什至问这个问题的事实是否暴露了我在分发 .pyx 文件方面的无知?我确信有很多方法可以让这项工作发挥作用,而且我最关心的是什么对人们最有效。

感谢您提供的任何帮助。

【问题讨论】:

  • This post(我在提交自己的文件后才发现)提供了一个答案。这是人们认为的“最佳实践”吗?
  • 另外,请查看 section of the documentation 描述如何分发使用 Cython 的软件包。

标签: python cython


【解决方案1】:

将 .pyx 文件与 .py 文件放在同一目录中对我来说最有意义。这是scikit-learn 的作者所做的,也是我在py-earth 模块中所做的。我想我认为 Cython 模块是 Python 模块的优化替代品。我通常会从用纯 Python 编写一个包开始,然后如果我需要更好的性能,可以用 Cython 替换一些模块。由于我将 Cython 模块视为 Python 模块的替代品,因此将它们放在同一个位置对我来说是有意义的。它也适用于使用 --inplace 参数的测试构建。

【讨论】:

  • 谢谢。如果我将 pyx 和 py 文件放在同一个目录中,我担心会弄乱一切(但我假设 scikit-learn 的人知道他们在做什么)。然而,把东西放在一个单独的目录中会有点混乱。
猜你喜欢
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 2023-03-31
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多