Python Numpy distutils howto

Python Numpy distutils howto,python,numpy,distutils,f2py,Python,Numpy,Distutils,F2py,我花了将近一个小时在谷歌上搜索解决方案,但是numpy.distutils的文档非常稀少 我有一个f2py包装的模块。它基本上由3个文件组成: a.f90 a.pyf lib.a <- this is a static library that contains most of the computational code 因此,我有了python模块a.so(名称在.pyf文件中指定) 如何使用numpy.distutils(或其他一些面向python的构建工具)实现这一点? 一个不太

我花了将近一个小时在谷歌上搜索解决方案,但是numpy.distutils的文档非常稀少

我有一个f2py包装的模块。它基本上由3个文件组成:

a.f90
a.pyf
lib.a <- this is a static library that contains most of the computational code
因此,我有了python模块a.so(名称在.pyf文件中指定)

如何使用numpy.distutils(或其他一些面向python的构建工具)实现这一点?
一个不太重要的问题是,我是否也可以包括lib.A的依赖性(并在必要时重建它?

因此,这不是一个小时的谷歌搜索,而是花了两天的谷歌搜索,但我终于找到了实现这一点的方法。 希望,这将有助于某人

  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())

最后一部分:要从
lib.a
添加依赖项,您必须创建一个单独的包(如果我理解您的意思),然后将其添加到您的
setup.py
的依赖项列表中。@rubik Ok,但是这个setup.py会是什么样子呢?您知道如何在numpy.distutils中指定
--fcompiler
选项吗?
  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())