2011-10-28 4 views
1

파이썬에서 첫 번째 프로젝트를 코딩 중이며 가져 오기를 처리하는 방법이 확실하지 않습니다. 나는 대학에서 컴퓨터 작업을하고 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 

프로젝트를 구성 할 수있는 더 좋은 방법에 대한 조언 이것과 같이 많이 감사 할 것입니다.

답변

1

먼저 응용 프로그램에 대한 단일 입력 지점을 제공하는 간단한 main.py 스크립트를 만듭니다.예를 들어 :

if __name__ == '__main__': 

    import sys 
    from package import app 

    sys.exit(app.run()) 

다음, 최상위 레벨 패키지 함께 그룹의 모든 모듈을 만들고 main.py 같은 디렉토리에 에 대한 액세스 포인트를 제공한다. 그런 다음 모든 경로 조작 코드를 제거하고 응용 프로그램 내의 모든 모듈에서 from package.module import function과 같이 완전히 지정된 import 문을 사용하면됩니다.

+0

답장을 보내 주셔서 감사합니다. "액세스 포인트 제공"이라고 정확하게 말하면서 방황하고 있습니다. 이것은 __init__.py 파일과 관련이 있습니까? –

+0

@Alty. 모듈이 현재 가지고있는 폴더를 어느 정도 재구성 할 수 있는지에 대한 질문에 명확하지 않았고 사용중인 OS가 무엇인지 확신 할 수 없었습니다. 따라서 "액세스 포인트"는 일반 디렉토리 또는 심볼릭 링크 등입니다. 핵심은 모든 모듈을 단일 패키지로 모으는 방법을 찾는 것입니다. 그러면 관리가 훨씬 쉬워집니다. – ekhumoro

1

첫째, 당신은 다음과 같은 문서의 파이썬 경로에 대한 물건의 일부 읽어야

당신은 아마 p 번째를 사용할 수 있습니다 문제를 해결하기 (python-search-path를) 파일에 필요한 모듈이 들어있는 경로 목록이 들어 있습니다.

다음부터 yo UR의 주요 스크립트가 자동으로 PYTHONPATH에 해당 디렉토리를 추가합니다

import site 
site.addsitedir(".") 

을 할 수 있습니다.

0

어떤 OS를 사용하는지 언급하지 않았습니다. 이 답변의 대부분은 Linux (또는 Unix 계열) 환경을 전제로합니다. Windows를 사용하는 경우 다른 사람이 전화를 거쳐야합니다.

위의 모든 왜곡을 왜 겪고 있는지 명확하지 않습니다. 먼저 PYTHONPATH을 어떻게 수정할 수 없습니까? 이것은 쉘 환경 변수 일뿐입니다. 로그인하여 Python을 실행할 수 있다면 자신의 환경 변수를 설정하는 데 필요한 액세스 권한이 있음을 눈으로 확인할 수 있습니다.

하지만 필요한 것은 아닌지 잘 모르겠습니다. vinilios에 의해 제안 당신은 단순히 자신의 라이브러리 디렉토리에 사용자 정의 모듈을 모두 설치하고 .pth 파일을 설치한다면, 당신은 이런 식으로 뭔가를 할 수 :

import site 
import os 

site.addsitedir(os.path.expanduser('~/lib/python')) 

당신은 또한에 살펴 봐야 할 수 있습니다 virtualenv 패키지는 자신 만의 패키지를 설치할 수있는 자신 만의 Python 환경을 만들 수있게 해줍니다. 시스템 파이썬에서 사용할 수없는 모듈을 설치해야 할 때 매우 편리합니다.

관련 문제