2016-11-09 5 views
2

나는 내 리눅스 (우분투 15.10)에 대한 몇 가지 아나콘다/파이썬 패키지를 업데이트했고, 그 결과로 나는 내가 전에 본 적이없는 오류 메시지가 다음 지금 얻을 :OSError : 정의되지 않은 기호

OSError: /usr/lib/x86_64-linux-gnu/libnetcdff.so.6: undefined symbol:nc_rename_grp 

Python 스크립트에서 Fortran 기반 프로그램을 호출 할 때 오류가 발생합니다. 그러나 파이썬없이 아주 똑같은 프로그램을 실행할 때 모든 것이 완벽하게 작동합니다 ...

또한 업데이트 후 프로그램을 다시 컴파일했지만 아무 것도 변경되지 않았습니다.

여기에 무슨 일이 일어나는지 실마리가 있습니까?

+0

나는 anaconda가 자신의 netcdf 라이브러리 버전을 어딘가에 제공한다고 생각한다. 아마도 아나콘다에서 실행될 때 anaconda lib 버전 (여분의 기호가있을 수 있음)을 사용할 것으로 예상되지만 'LD_LIBRARY_PATH'또는 이와 유사한 의미로 시스템 버전을 가져 오는 동적 링크 된 개체로 작업하고 있거나 그 반대 일 수 있습니다. . "fortran 기반"프로그램이 무엇인지, 어떻게 실행하는지, 즉 실행 파일을 실행하기 위해 파이썬에서 시스템 호출을 사용하고 있는지에 대해 좀 더 자세히 설명해 주시겠습니까? 만약 그렇다면'ldd myExecutable'을 파이썬과 외부 파이썬에서 할 수 있습니다. –

+0

영국 영어로 프로그램은 컴퓨터 프로그램 및 프로그램을 말하며 프로그램은 다른 모든 단어에 사용됩니다. –

답변

0

기호 nc_rename_grp는 libnetcdf.so에 정의되어 있습니다. 하위 프로세스를 사용하여 FORTRAN 코드를 실행하는 경우 다음과 같이 env를 선언해야합니다.

env["LD_LIBRARY_PATH"] = "/usr/lib/x86_64-linux-gnu" 
h = subprocess.Popen(cmd,env=env) 
0

감사합니다. 이 문제는 ./bashrc의 netcdf-libraries 경로가 잘못 설정되어 프로그램 (컴퓨터 프로그램/모델)이 제대로 작동하지 않아서 발생했습니다. 이제 모든 것이 해결되고 프로그램/모델이 가동됩니다!