将单个SciPy模块编译为*.pyd文件

3

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

整个SciPy包重量很大(约80 mb)。是否可能只编译1个模块成为*.pyd文件并像其他模块一样导入它,以便我不必包含我实际上不需要的模块?

1个回答

2
如果您只想分发 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 编译成 C 代码,并生成独立的 .pyd/.so 文件。
应该有一个 Python 模块可以自动完成这个过程,例如 pyinstaller 可以在生成的二进制可执行文件中仅包含所需的模块。因此,您需要一个类似于 pyinstaller 的工具来生成动态库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接