Numpy distutils 如何使用指南

8
我花了将近一个小时在谷歌上搜索解决方案,但是numpy.distutils的文档非常稀少。
我有一个通过f2py封装的模块。它基本上由3个文件组成:
a.f90
a.pyf
lib.a <- this is a static library that contains most of the computational code

该模块可通过以下shell脚本命令进行编译。
f2py --build-dir temp -c a.pyf a.f90 lib.a --fcompiler=gnu95   
--fcompiler-flags="Zillions of compiler options"

作为结果,我拥有python模块a.so(名称在.pyf文件中指定)。
使用numpy.distutils(或其他面向Python的构建工具)如何实现这一点? 一个不太重要的问题是,我是否也可以包括来自lib.a的依赖项(并在必要时重新构建它?)

仅针对最后一部分:要添加从 lib.a 的依赖项,您将需要创建一个单独的包(如果我理解您的意思),然后将其添加到您的 setup.py 的依赖项列表中。 - rubik
@rubik 好的,但是这个 setup.py 文件具体应该长什么样子呢? - Ivan Oseledets
1个回答

5

所以,并不是仅仅1小时的搜索,而是经过了两天的搜索,但最终我找到了实现这个目标的方法。希望对某人有所帮助。

  def configuration(parent_package='',top_path=None):
      from numpy.distutils.misc_util import Configuration, get_info
      config = Configuration('a', parent_package, top_path)
      lib = ['./libdir/lib.a']
      src = ['a.f90','a.pyf']
      inc_dir = ['libdir']              
      config.add_extension('mya',sources=src,depends=lib_tt,
                      include_dirs=inc_dir,extra_objects="lib.a")
      #The main trick was to use extra_objects keyword
      return config

  if __name__ == '__main__':
      from numpy.distutils.core import setup
      setup(**configuration(top_path='').todict())

你知道如何在numpy.distutils中指定--fcompiler选项吗? - Eular

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