[python] sys.path / PYTHONPATH에 디렉토리 추가

특정 디렉토리에서 모듈을 가져 오려고합니다.

문제는 sys.path.append(mod_directory)경로를 추가하고 파이썬 인터프리터를 열 때 디렉토리 mod_directory가 sys.path 목록의 끝에 추가된다는 것입니다. PYTHONPATH파이썬 인터프리터를 열기 전에 변수를 내 보내면 디렉토리가 목록의 시작 부분에 추가됩니다. 후자의 경우 모듈을 가져올 수 있지만 전자의 경우 모듈을 가져올 수 없습니다.

누군가 왜 이런 일이 일어나고 있는지 설명 하고 파이썬 스크립트 mod_directory 에서 시작 부분 을 추가하는 솔루션을 제공 할 수 있습니까?



답변

이것은 문서화 된대로 작동합니다. 에 지정된 모든 경로 PYTHONPATH는 일반적으로 작업 디렉토리 이후에 표준 인터프리터 제공 경로 앞에 오는 것으로 문서화되어 있습니다. sys.path.append()기존 경로에 추가합니다. 여기여기를 참조 하십시오 . 특정 디렉토리가 먼저 오게하려면 간단히 sys.path의 헤드에 삽입하십시오.

import sys
sys.path.insert(0,'/path/to/mod_directory')

즉, 일반적으로 직접 사용 PYTHONPATH하거나 조작하는 것보다 수입을 관리하는 더 좋은 방법이 sys.path있습니다. 예를 들어이 질문에 대한 답변을 참조하십시오 .


답변

당신은 사용할 수 있습니다 :

import os
path = 'the path you want'
os.environ['PATH'] += ':'+path


답변

나에 관해서는, 나는 파이썬 경로에 카페인이 필요하다. 추가하여 파일의 경로를 추가 할 수
/home/xy/.bashrc있습니다

export PYTHONPATH=/home/xy/caffe-master/python:$PYTHONPATH.

/home/xy/.bashrc파일에.

그러나 pycharm을 사용할 때 여전히 경로가 없습니다.

따라서 PYTHONPATH실행-> 구성 편집 을 통해 변수 에 경로를 추가 할 수 있습니다 .

여기에 이미지 설명을 입력하십시오


답변

임시로 디렉토리를 변경하면 가져 오기에 효과적입니다.

cwd = os.getcwd()
os.chdir(<module_path>)
import <module>
os.chdir(cwd)


답변

Windows의 Powershell에서 Python 스크립트를 실행할 때 다음과 같이 작동합니다.

$pathToSourceRoot = "C:/Users/Steve/YourCode"
$env:PYTHONPATH = "$($pathToSourceRoot);$($pathToSourceRoot)/subdirs_if_required"

# Now run the actual script
python your_script.py


답변