Numpy setuptools:如何编译fortran文件作为模块的一部分

时间:2015-10-11 16:41:25

标签: python numpy fortran setuptools f2py

我有一个表格

的目录结构
setup.py
python/
  __init__.py
  a.py
  b.f

我想将其安装为名为foo的包,其结构为

site-packages/
  foo/
    __init__.py
    a.py
    b.so

但我不知道如何写setup.py才能实现这一目标。到目前为止我已经

import numpy.distutils.core
b = numpy.distutils.core.Extension(name = 'b', sources = ['python/b.f'])
numpy.distutils.core.setup(
  name = 'foo',
  version = '0.0',
  packages = ['foo'],
  package_dir = {'foo':'python'},
  ext_modules = [b]
)

但这会导致

site-packages/
  foo/
    __init__.py
    a.py
  b.so

很明显我在这里遗漏了一些东西。我如何让b.so进入foo包,而不是作为单独的包安装?

1 个答案:

答案 0 :(得分:2)

告诉setuptools应该将某个扩展模块安装为包的一部分(例如foo),而不是单独安装,只需将foo.加到其名称前面即可。例如。变化

b = numpy.distutils.core.Extension(name = 'b', sources = ['python/b.f'])

b = numpy.distutils.core.Extension(name = 'foo.b', sources = ['python/b.f'])