【问题标题】:Install precompiled python extension with distutils使用 distutils 安装预编译的 python 扩展
【发布时间】:2011-12-22 09:52:08
【问题描述】:

如何指定任意一组文件(不一定是 .py 文件),以便它们像普通 Python 模块一样分发和安装?

一些背景

我正在使用 distutils 分发和安装我的 Python 库。该库中的一个模块导入了一个名为 bpy.so 的第 3 方 Python 扩展(这是一个 Blender 模块)。 bpy.so 扩展还需要一些其他文件。我想通过我的库分发和安装 bpy.so 以及其他所需的文件。

执行此操作的一种方法是将所有额外文件指定为 setup() 的 data_files。但是,我不知道如何可靠地指定与纯 python 模块相同的安装目录(例如 /usr/local/lib/python3.2/dist-packages)。 我可以通过创建一个 MANIFEST.in 文件来分发额外的文件(请参阅 this question),但我还想安装这些文件。

【问题讨论】:

  • the docs帮忙?
  • 这些是 setuptools 的文档,我以前不知道。 (请参阅下面的 mac 答案。)我使用的是 distutils。

标签: python distutils


【解决方案1】:

我建议在 distutils 之上使用 setuptools。

This 是一个很好的入门参考文档。使用 setuptools 的优点是它有一些不错的功能,例如可以自动或根据过滤器包含给定目录(包)下的所有文件。 This 是上述文档中处理此特定方面的部分。

HTH!

PS:distutils 目前的情况/限制是大多数用户抱怨的根源。不过,a new generation of the library 似乎正在路上!

【讨论】:

  • 很好的建议。这似乎正是我想要的。谢谢!
  • package_data 在 Python 2.4 中被反向移植到 distutils。您无需仅为他们切换到 setuptools。 (使用 setuptools 有好有坏。)