【问题标题】:Getting distutils to install prebuilt compiled libraries?让 distutils 安装预编译的库?
【发布时间】:2009-06-16 16:27:03
【问题描述】:

我管理一个用 python 编写的开源项目(Remix,源代码在那里可用)。我们要求用户运行 python setup.py install 来安装软件。最近我们添加了一个已编译的 C++ 包(SoundTouch 的一个端口——转到源代码中的 trunk/externals 以查看它。)我们希望安装基本 Remix 库的 setup.py 文件也安装 pysoundtouch14 库。

但是,我们不希望用户必须在他们的系统上安装 gcc 或 msvc 工具链。我们已经为常见平台(linux-i386、windows、mac 10.5 和 10.6)预编译了二进制文件,请转到 trunk/externals/pysoundtouch14/build 以查看它们。我希望没有安装 gcc 或 msvc 的用户可以运行 pysoundtouch14 的 setup.py,它会检测到我们预构建的二进制文件的存在并将它们复制到正确的位置(/Library/Python/2.5/site-packages ,例如。)但这不会发生。例如,在一个新的 10.5 系统上,setup.py 抱怨没有安装 gcc,即使它需要安装的 .so 已经构建在 build/ 文件夹中。

所以我有两个直接的问题:

  • 如何让 setup.py 根据平台自动“安装”预构建的 .so 和 .pyd 文件,而不需要构建系统?
  • 一个 setup.py(我们的主 setup.py 文件)如何同时运行另一个包含的包的 setup.py(pysoundtouch14 的 setup.py?)

【问题讨论】:

    标签: python open-source installation compiled


    【解决方案1】:

    考虑到多平台要求,您的第一个问题是一个棘手的问题。如果只是 windows,您可以使用安装后脚本选项运行脚本来处理库,或者只使用非 python 工具,例如NSIS。除了 Almad 的建议,我不确定还能做什么。

    对于第二个问题,您可能需要查看Paver

    【讨论】:

    • 感谢 DoxaLogos。在这种情况下,我们可能只需要迁移到特定于平台的安装程序(NSIS、Mac 上的软件包、debian 的 dkpg/apt 等)。这可能不是一个可怕的想法。但我希望有一个纯 python 解决方案......可能是不可能的。
    • 好吧,即使您使用多个打包工具,我认为您也可以使用 Paver 之类的工具自动创建包。因此,一旦您开始设置所有内容,您就可以使用 Paver 运行构建脚本。
    【解决方案2】:

    不幸的是,我想说覆盖安装命令是要走的路。

    这可以很容易地完成,使用自定义分发命令。例如,参见 [1] http://svn.zope.org/Zope/branches/2.9/setup.py?rev=69978&view=auto

    【讨论】:

      猜你喜欢
      • 2011-12-22
      • 2012-05-22
      • 1970-01-01
      • 2011-04-18
      • 2013-10-13
      • 2023-03-29
      • 2011-08-05
      • 2010-11-28
      • 1970-01-01
      相关资源
      最近更新 更多