파이썬에서 첫 번째 프로젝트를 코딩 중이며 가져 오기를 처리하는 방법이 확실하지 않습니다. 나는 대학에서 컴퓨터 작업을하고 PYTHONPATH 변수를 수정할 수 없습니다. 나는 또한 다양한 컴퓨터/OS에서이 프로젝트를 진행하고있다. 그래서 프로젝트 경로가 항상 같지는 않다.PYTHONPATH를 수정할 수 없을 때 파이썬에서 다른 모듈을 가져 오는 가장 좋은 방법은 무엇입니까?
서로 다른 폴더에 서로 다른 모듈을 여러 개 가져와 서로 가져옵니다. 현재 file_path = os.path.abspath(__file__)
을 사용하여 다른 모듈에서 하나의 모듈로 경로를 가져온 다음 디렉토리를 역 추적 한 다음 원하는 모듈이있는 폴더를 추가합니다. 이것은 sys.path.append(symantic_root)
으로 PYTHONPATH에 추가됩니다.
이 시스템은 작동하지만, 매우 지저분한 찾고 끝과 중복 코드를 많이 예를 들어, 각 모듈의 시작 부분에있다 :
import os
import sys
# Get the path to the directory above the directory this file is in, for any system
file_path = os.path.abspath(__file__)
root_path = os.path.dirname(os.path.dirname(file_path))
# Get the paths to the directories the required modules are in
symantic_root = os.path.join(root_path, "semantic_analysis")
parser_root = os.path.join(root_path, "parser")
# Add the directories to the path variable
sys.path.append(symantic_root)
sys.path.append(parser_root)
import semantic_analyser
import jaml
프로젝트를 구성 할 수있는 더 좋은 방법에 대한 조언 이것과 같이 많이 감사 할 것입니다.
답장을 보내 주셔서 감사합니다. "액세스 포인트 제공"이라고 정확하게 말하면서 방황하고 있습니다. 이것은 __init__.py 파일과 관련이 있습니까? –
@Alty. 모듈이 현재 가지고있는 폴더를 어느 정도 재구성 할 수 있는지에 대한 질문에 명확하지 않았고 사용중인 OS가 무엇인지 확신 할 수 없었습니다. 따라서 "액세스 포인트"는 일반 디렉토리 또는 심볼릭 링크 등입니다. 핵심은 모든 모듈을 단일 패키지로 모으는 방법을 찾는 것입니다. 그러면 관리가 훨씬 쉬워집니다. – ekhumoro