2017-04-13 1 views
1

파이썬 라이브러리가 설치되어 있지만 설치된 라이브러리를 변경하지 않고 다른 폴더에서로드하려고합니다. 다음 코드를 사용하여 경로를 바꾸려고 시도했지만 라이브러리를로드하는 데 두 개의 경로가 저장되며 첫 번째 우선 순위는 이전 경로입니다. 새 우선 순위를 설정하거나 이전 우선 순위를 제거하려면 어떻게합니까?파이썬 라이브러리를 가져 오는 경로를 선택하는 방법

import pkg_resources 
pkg_resources.declare_namespace('google') 
pkg_resources.fixup_namespace_packages(_MY_LIBRARY_DIR) 
import google.protobuf 
print(google.protobuf.__path__) 

출력 : [ '이전 경로', '새로운 길']

+0

파이썬은 먼저 현재 실행중인 프로그램의 디렉토리에서 패키지를 찾은 다음 동일한 디렉토리에있는 모듈을 찾은 다음 환경 변수 [PYTHONPATH] (http://stackoverflow.com/questions)를 따릅니다./19917492/how-to-use-pythonpath). virtualenv 나 pyenv와 같은 패키지는 동일한 시스템에서 동일한 패키지의 여러 버전을 공존시키기 위해 PYTHONPATH의 조작을 자동화합니다. –

+1

BTW 이것은 X/Y 문제의 전형적인 예입니다. 문제 X (한 시스템에서 동일한 패키지의 충돌하는 버전을 갖는 방법)에 대해 묻는 대신, 고안된 솔루션 Y (Python 모듈의 가져 오기 경로를 사용하는 바이올린)에 대해 질문합니다. –

답변

0

당신이 모듈과 라이브러리의 경로를 찾을 __file__를 사용할 수 있지만,

print(google.protobuf.__file__) 

하지만 당신이 원하는 달성은 가상 환경에 대한 고전적인 사례입니다.

가상 환경은 서로 다른 프로젝트에서 필요로하는 종속성을 가상 Python 환경을 만들어 별도의 장소에 보관하는 도구입니다.

Virtualenv

Pyenv

0

사용 Virtualenv. Hitchhikers Guide to Python에서

:

가상 환경, 그들을 위해 가상 파이썬에게 환경을 만들어 별도의 장소에서 다른 프로젝트에서 필요로하는 종속성을 유지하는 도구입니다. "Project X는 버전 1.x에 종속적이지만 Project Y는 4.x가 필요합니다"라는 딜레마를 해결하고 글로벌 사이트 패키지 디렉토리를 깨끗하고 관리하기 쉬운 상태로 유지합니다.

관련 문제