将f2py与distutils混合

时间:2013-01-22 07:01:22

标签: python distutils f2py

我有一个python包“trees”,其中包含myscript.py文件,该文件使用了fortran子例程。

通常我用

编译fortran模块
f2py -c -m calctree calctree.f90
然后我就可以了

from trees import myscript
myscript.mysub()

使用calctree.so

如果我通过运行

打包distutils
python ./setup.py sdist

其中setup.py的内容为

#! /usr/bin/env python
from distutils.core import setup

setup(name='trees',
      version='0.1',
    packages=['trees']
    )

并在MANIFEST.in文件中指定“include trees / calctree.f90”,我可以包含.f90文件,但我不知道如何在用户的计算机上使用f2py进行编译,并且有。所以文件放在适当的地方。有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您想使用具有自己的设置功能的numpy.distutils.core模块。 你的setup.py看起来应该是这样的(假设fortran文件在名为trees的目录中),

import numpy.distutils.core
import setuptools


# setup fortran 90 extension
#---------------------------------------------------------------------------  
ext1 = numpy.distutils.core.Extension(
    name = 'calctree',
    sources = ['trees/calc_tree.f90'],
    )


# call setup
#--------------------------------------------------------------------------
numpy.distutils.core.setup( 

    name = 'trees',
    version = '0.1',        
    packages = setuptools.find_packages(), 
    package_data = {'': ['*.f90']}, 
    include_package_data = True,   
    ext_modules = [ext1],

)  

这至少应该是一个开始。