2013-07-12 3 views
3

예, 오래된 데비안 VM이 있습니다. 패키지 관리자는 쓸모가 없습니다. 아니요, OS를 업데이트하지 않을 것입니다.Python 설치, bz2 모듈을 찾지 못함

필자의 시스템에 bzip2 라이브러리와 개발 헤더가 올바르게 설치되어 있습니다. 실제로 패키지에서 제공됩니다.

시스템에서 Python을 전혀 사용하지 않습니다. 나는 모든 것을 수동으로 제거했다. 파이썬 2.7.5 소스를 다운로드하고 ./configure --prefix=/usr으로 설정했다. 그것은 잘 구성합니다. make을 실행하고 정상적으로 컴파일됩니다. 그때 make test을 실행

The python bz2 module provides a comprehensive interface for the bz2 compression library. It implements a complete file interface, one shot (de)compression functions, and types for sequential (de)compression.

전체 테스트 스위트는 잘 진행하고, 특히 "test_bz2는"테스트를 통과 : 나는 그것을 작동하고 말한다 ./python -c "import bz2; print bz2.__doc__"을 시도합니다.

그런 다음 make install을 실행하면 원하는대로 필자의 새로운 Python 바이너리가/usr/bin /에 설치됩니다.

나는 /usr/bin/python -c "import bz2; print bz2.__doc__"을 시도, 그것은 실패 :

Traceback (most recent call last): File "", line 1, in ImportError: No module named bz2

내가 --enable-shared 아니라, 행운 등의 건물 파이썬을 포함하여 여러 가지의 무리를 시도했습니다. 나는 최소한 10 번 시도했다. (매번 완전히 모든것을 청소하고, make distclean을 실행하는 등). 불운.

시도 : PYTHONPATH="/usr/lib/python2.7"; export PYTHONPATH. 아직도 운이 없다.

그러나 make install이/usr/bin/python에 대해 생성하는 심볼릭 링크를 삭제하고 대신 다음을 수행하십시오 : ln -s /path/to/my/python/compile/python python, 지금은 마술처럼 작동합니다.

그럼 뭐야? 왜이 Python 바이너리는 바이너리가 컴파일 디렉토리에 존재할 때만 찾을 수 있도록 만들어졌으며, 정상적인 프로덕션 설치 위치에있을 때가 아닙니다. 내가 뭘 놓치고 있니?

전 프로세스 중에 루트입니다. ~ make ~ make install에서 Python 가져 오기 호출을 테스트하려고합니다.

나는 (이 시간 BTW --enable-shared로 컴파일) 다시 처음부터 시작하고,뿐만 아니라 컴파일 디렉토리는 build/lib.linux-x86_64-2.7/bz2.so가 있다는 것을 확인하는,하지만 난 make install를 실행하면, 해당 파일은 /usr/lib/python2.7/lib-dynload/bz2.so에 투입했다.

나는 lib-dynload에서 약간의 읽기를 시도했지만, 파이썬 프로그램 (예 : CLI의 기본 구성 또는 기타)이 있는지를 판별 할 수 없었다. lib-dynload에서 모듈 가져 오기를 가져 오거나, 다른 곳이나 옵션이있어 make install에 dynload 대신 넣어야한다고 말하면됩니다.

아직도 나는 /path/to/compilation/python 바이너리 찾아 부하 bz2.so 잘 할 수있는 이유 아무런 설명이 없다, 그러나 /usr/bin/python 바이너리 /usr/lib/python2.7/lib-dynload/bz2.so을 찾아 (또는로드) 할 수 없다.

아마도 설치가 심볼릭 링크를 가리키고 /usr/lib/python2.7 디렉토리를 생성하지 않는다고 생각했을 것입니다. 하지만 나는 심볼릭 링크를 만들었지 만 아직 갈 길이 없다.

여기에도 여전히 분실되어 있습니다.

+0

* make install *을 수행하려면 root 권한이 필요합니다. 그걸 확인 했니? – z8po

+0

필자는'configure '에서'make'에 이르기까지 전체 과정에서'make install'에 대한 루트로서 파이썬 import 호출을 테스트하려고합니다. –

+0

데비안도 lib64뿐 아니라 lib도 갖고 있습니까? 가끔은 일들이 잘못된 것중에 놓이게되고, 당신은 심볼릭 링크를해야합니다 ... (그런 일은 일어나지 않는 것 같지만 미안합니다). –

답변

2

일종의 비 답답이 우연히 트위터 대화의 긴 문자열을 통해 도착한 것으로 보입니다.

나는이 문제에 대한 해결책 왜 우리가 발견 물어 여기에 또 다른 스택   오버플로 질문을 제기했습니다

는 : https://stackoverflow.com/questions/17662091/python-installation-prefix-not-being-persisted-in-config 후세를 위해서

, 지금이 솔루션은 내가 PYTHONHOME 환경 변수를 설정해야한다는 것입니다 /usr, 모든 것이 작동하기 시작합니다. 수수께끼 같은 부분은 설명서에서 PYTHONHOME이 {prefix}로 기본 설정되어야한다는 것입니다. 구성 중에 기본값으로 /usr으로 명확하게 설정되었습니다. 그렇다면 수동으로 설정해야하는 이유는 무엇입니까?

python-config --prefix는 {접두사} 기본값은 기괴 다시 기본으로 기본값을 대체 할 필요 나에게지도하는 사실 /usr/bin, 내가 지정한처럼하지 /usr에 있음을 보여준다 실행합니다.

+0

허. 업데이트 주셔서 감사합니다. 내 동정 ... –

관련 문제