2013-01-22 2 views
3

나는 fortran 서브 루틴을 사용하는 myscript.py 파일을 포함하는 python 꾸러미 "trees"를 가지고있다. distutils로 f2py 섞기

는 일반적으로 나는

f2py -c -m calctree calctree.f90 

으로 포트란 모듈을 컴파일하고 난 후, 나는

를 실행하여의 distutils와 모든 패키지 경우 calctree.so

를 사용합니다

from trees import myscript 
myscript.mysub() 

할 수

python ./setup.py sdist 
setup.py의 내용이

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

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

를하고 지정 (3210)

는 MANIFEST.in 파일에, 나는 .f90 파일을 포함 할 수 있습니다 "나무/calctree.f90 포함",하지만 난 방법을 모르는 사용자의 컴퓨터에서 f2py로 컴파일하고 .so 파일을 적절한 위치에 놓습니다. 아무도 도와 줄 수 있니?

감사합니다.

+0

내장 솔루션에 대한 아이디어는 없지만'setup'을 호출하기 전에 모듈에서 직접 명령을 실행 한 다음 컴파일 된 파일을 설치 호출에 포함시킬 수 있습니다. – Voo

답변

1

자체 설정 기능이있는 numpy.distutils.core 모듈을 사용하려고합니다. 적어도 시작해야이 같은 (포트란 파일이 디렉토리에라는 이름의 나무입니다 가정)을 보여야 setup.py,

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

) 

.