3

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

通常我用

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 进行编译,并放置 .so 文件在适当的地方。有人可以帮忙吗?

谢谢!

4

1 回答 1

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],

)  

这至少应该是一个开始。

于 2014-01-31T06:16:02.500 回答