티스토리 뷰
Python에서 (또는 Cython에서) 외부 라이브러리를 사용할 때 (주로 Python wrapper 모듈을 통해 사용), 외부(external or third party) 동적 라이브러리(dynamic library, DLL) 또는 공유 라이브러리 (shared library, SO)가 들어있는 디렉토리가 dynamic linker가 참조하는 환경변수에 포함돼 있어야 한다.
운영체제에 따라 프로그램 실행 과정에서 동적 라이브러리를 찾는 방법이 다르니, '적절한' 환경변수에 해당 라이브러리가 들어있는 경로를 추가해 주면 된다.
예를 들어, Windows에서는 "PATH", Linux 배포판에서는 "LD_LIBRARY_PATH", OSX에서는 "DYLD_LIBRARY_PATH"에 동적 라이브러리가 들어있는 경로를 추가해 주면 된다.
외부 라이브러리가 들어있는 경로를, PYTHONPATH 환경변수에 추가하거나 sys.path.append()로 Python 확장모듈 경로모음에 추가해 주는 것은 효과가 없다. Python(여기에서는 CPython) 프로그램이 실행되는 중에 밑단에서 돌아가고 있는 동적 라이브러리 코드를 호출하는 경우, 운영체제가 해당 동적 라이브러리의 위치를 파악할 수 있어야 하기 때문이다.
외부 라이브러리를 이용하는 C/C++ 프로그램이 실행되는 원리와 동일하다고 보면 된다.
참고:
http://osr507doc.sco.com/en/tools/ccs_linkedit_dynamic_dirsearch.html
http://superuser.com/questions/282450/where-do-i-set-dyld-library-path-on-mac-os-x-and-is-it-a-good-idea
'Python > 문제 해결' 카테고리의 다른 글
[TensorFlow] TensorBoard 빌드하기 (4) | 2016.04.18 |
---|---|
[PyQt5] This application failed to start because it could not find or load the Qt platform plugin ... (1) | 2015.11.23 |
numpy와 scipy 설치 (0) | 2014.02.04 |
윈도우(Windows)에서 PyQt 빌드할 때, QtCore4.dll 프로시져 시작지점 에러 해결 (0) | 2010.01.19 |
SWIG로 작성한 C/C++ 확장모듈을 Distutils로 배포 시, setup.py 예시 (0) | 2009.10.18 |
- Total
- Today
- Yesterday
- cython
- structure
- QPrinter.A4
- CanDrA
- PyQt
- QPrinter.Letter
- GSX 1200 pro
- dll
- Item 9
- ctypes
- GSX 1000 pro
- how to solve it
- Python
- QT
- Accelerated C++
- TCGA
- 볼륨 낮춤
- tensorflow
- destructor
- MSVC++
- 볼륨 조절
- volume dial
- 이상한 문자
- Visual C++
- matrix multiplication
- C++
- 설치
- TensorBoard
- armadillo c++
- pandas
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |