특정 디렉토리에서 모듈을 가져 오려고합니다.
문제는 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