2017-11-08 2 views
0

MATLAB 컴파일 응용 프로그램 (MATLAB 컴파일러 사용)에서 파이썬 스크립트를 실행하려고하는데 일부 이상한 이유로 scipy에서 가져 오기를 찾을 수 없습니다. 내가 어떤 scipy 메서드를 호출 할 때 내가 직접 파이썬이나 MATLAB에서 같은 코드를 호출 할 경우이 오류를 나에게MATLAB 컴파일러 응용 프로그램에서 파이썬을 호출 할 때 파이썬 라이브러리를 호출 할 수 없습니다.

Python Error: ImportError: cannot import name sigtools 

을 제공, 그것은 작동합니다. MATLAB 컴파일러가 아닙니다.

또 다른 이상한 것은 MATLAB에서 파이썬 호출이 보는 파이썬 경로가 정확하다는 것입니다. 그래서 무엇이이 문제를 일으킬 수 있습니까?

편집 내 파이썬 경로

/usr/lib/python2.7 
/usr/lib/python2.7/plat-x86_64-linux-gnu 
/usr/lib/python2.7/lib-tk 
/usr/lib/python2.7/lib-old 
/usr/lib/python2.7/lib-dynload 
/usr/local/lib/python2.7/dist-packages 
/usr/lib/python2.7/dist-packages 
/usr/lib/python2.7/dist-packages/PILcompat 
/usr/lib/python2.7/dist-packages/gtk-2.0 

나는 당신의 질문에

/usr/lib/python2.7/dist-packages/scipy/signal/ 
+0

정보가 충분하지 않습니다. sigtools는 어디에 있습니까? sys.path'는 sigtools 등을 설치했습니다. – thebjorn

+0

이 파일은 /usr/lib/python2.7/dist- packages/scipy/signal/디렉토리에 설치되어 있다고 가정합니다. 또 다른 정보는 Python에서 동일한 코드를 직접 호출하면 작동한다는 것입니다. MATLAB에서 직접 호출하면 MATLAB 컴파일러 버전이 아니라 동일한 코드가 호출됩니다. 당신의 도움을 주셔서 감사합니다 – MSO

+1

그것이 주장하는 곳이라면, 분명히'sys.path'가 그것을 찾지 못할 것입니다. 그러나'import scipy.signal.sigtools'는 효과가 있습니다. – Reti43

답변

1

문제의 해결책을 찾았습니다. MATLAB 런타임 환경에서 제공하는 libstdc++의 버전이 너무 오래되어 일부 파이썬 라이브러리를 가져올 수 없습니다. libstdc++.so.6 version 3.4.21이어야합니다. libstdC++. so.6 파일을 MATLAB 런타임 디렉토리 인 v901/sys/os/glnxa64/에있는 업데이트 된 버전 (3.4.21)으로 바꿨습니다.

0

대답에 파일 sigtools.x86_64-linux-gnu.so 있습니다.

sigtools.so lib가 컴퓨터에있는 위치로 바로 이동하여 python -c "import sigtools"을 입력 한 다음 파일에서 가져올 수 있습니다.

+0

이것이 작동해야하는 이유를 설명해 주시겠습니까? .pyc 파일을 만들기 위해 파일을 가져 오는 것뿐입니다.이 작업은 모든 디렉토리에서 수행 할 수 있습니다. 게다가 파이썬은 Python과 Matlab에서 직접 작동하도록 명시되어 있으므로 문제가 해결 될 수있는 방법을 알 수 없습니다. – Reti43

+0

이 MATLAB에서 작동하지 않는다, 나는 그것이 작동하지만 matlab 쪽에서 파이썬 만 사용하면 파이썬 오류 : ImportError : name sigtools를 가져올 수 없다. MATLAB이 파이썬 호출을 시작할 때 파이썬 경로에서 무언가를 엉망으로 만든 것 같습니다. – MSO

+0

(MATLAB없이 실행 파일을 실행하는 데 필요한) MATLAB 런타임 디렉토리를 확인하면서 파이썬 파일을 발견했으며 관심을 끌었습니다.그것은 임베디드 인터프리터를 초기화하는 데 필요한 정보를 파이썬에 쿼리하는 파이썬 코드 인 것 같습니다. 그 안에는 LibraryFinder라는 클래스가 있습니다. 아마도 그 안에 버그가있을 수 있습니다. – MSO

관련 문제