2013-09-25 2 views
3

이것은 매우 새로운 질문입니다. 그러나 Google에서 잠시 동안 검색 한 후에 해결책을 찾을 수 없었습니다. 나는 Fortran 77로 작성된 루틴을 필요로하는 Eclipse (Linux Mint)를 사용하여 파이썬 코드를 작성하고있다. 코드는 fortran_code.f이라는 파일에있다. 파일 fortran_code.so을 얻으려면 f2py을 사용했습니다. 이 파일은 파이썬 코드 (../workspace/python_project/src)와 같은 폴더에 있습니다. 파이썬 코드는 포함 일단Fortran 파일을 파이썬으로 가져 오기

import fortran_code 
a = 10 
fortran_code.fortran_subroutine(a) 

다시, 결과는 다음과 같습니다

Traceback (most recent call last): File 
"/home/user/Documents/workspace/python_project/src/Main.py", line 7, 
in <module> 
import fortran_code ImportError: /home/user/Documents/workspace/python_project/src/fortran_code.so: 
undefined symbol: PyCObject_Type 

포트란 서브 루틴의 코드는 다음과 같습니다

SUBROUTINE fortran_subroutine(a) 
REAL*8, intent(in) :: a 
REAL*8 b 
b=a*2 
end subroutine fortran_subroutine 

은 (fortran_code하는 .so 파일을 얻을 수 있습니다. 그래서) 사용 :

f2py -c fortran_code.f -m fortran_code 

ver 파이썬의 버전은 2.7.4

이 문제를 해결하는 데 도움이 될 것입니다.

감사합니다.

+1

질문에 포트란 코드를 넣을 수 있다면 문제 일 수 있습니다. – Developer

+1

어떤 버전의 f2py 및 Python을 사용하고 있습니까? 'CObjects'는 Python 3.0 [(see here)] (http://docs.python.org/2/howto/cporting.html)에서'Capsule'에 의해 대체되었습니다. 내 생각 엔 f2py는 Python 3.0 (또는 그 이상)에서 해석되는 Python 2.7 (또는 이전 버전) 용 코드를 생성합니다. –

+0

또한'f2py'를 호출 할 때 사용하고있는 명령을 추가하십시오. –

답변

0

파이썬 인터프리터를 파이썬 3.2에서 파이썬 2.7로 수정해야했습니다 (f2py는 파이썬 2.7 용 코드를 생성하기 때문에). 새로운 파이썬 모듈을 편집 한 후 모든 것이 잘 작동했습니다 !!!

정말로 도움이 된 모든 제안 및 의견에 감사드립니다.

관련 문제