【问题标题】:Compiling single SciPy module to *.pyd将单个 SciPy 模块编译为 *.pyd
【发布时间】:2015-04-17 10:01:26
【问题描述】:

我正在开发一个主要使用 NumPy 和一个 SciPy 模块 (scipy.optimize.fsolve) 的小工具。我与其他人分享它的想法是它与 Portable Python 打包在一起,这样理论上每个人都可以运行它。

整个 SciPy 包很重(大约 80 mb)。是否可以只将 1 个模块编译成 *.pyd 并将其作为任何其他模块导入,这样我就不必包含我实际上不需要的模块?

【问题讨论】:

    标签: python module scipy portability pyd


    【解决方案1】:

    如果您只想随代码分发一个子集 SciPy 代码(尤其是 scipy.optimize.fsolve),有多种可能性,

    1. 查看 SciPy 源代码并仅复制 fsolve 函数所需的文件。快速浏览一下,至少是scipy/optimize/optimize.pyscipy/optimize/minpack.pyscipy/optimize/_minpack.so/.pyd(但也许我错过了几个)。
    2. 在更简单的方法中,逐个文件夹删除 scipy 安装目录中未使用的部分(尤其是那些占用大量空间的部分),包括 scipy/weavescipy/sparsescipy/linalg 等。
    3. 围绕 scipy.optimize.fsolve 编写一个简单的包装器,并使用 cython 将其编译为 C 代码,这应该会生成一个独立的 .pyd/.so

    应该有一个 python 模块来自动执行此操作,例如pyinstaller 确实只在它生成的二进制可执行文件中包含所需的模块。所以你需要一个等价的 pyinstaller 来生成动态库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多