2013-01-23 2 views
5

다음 내 프로젝트 레이아웃이 될 때 :파이썬 - 프로젝트 루트에서로드 파일의 상대는

├ ... 
├── pve 
│   ├── blahblah 
│   │   ├── TestDefinition.py 
│   │   ├── TestDefinition.pyc 
│   │   ├── __init__.py 
│   │   └── __init__.pyc 
│   └── pve.py 
├── src 
│   └── definitions 
│    └── THISFILE.yml 
└── ... 

내가 PVE/blahblah에 의해 SRC/정의에서 (예를 들어 THISFILE.yml) 파일을 가져올 수 있어야합니다/TestDefinition.py 클래스.

어떻게 프로젝트 루트에 올바르게 액세스합니까? 일단 내가 가지고 있으면, .yml 파일에 상대적으로 액세스 할 수 있습니다. TIA.

답변

10

프로젝트 루트에 루트에 대한 aboslute 경로가있는 일종의 구성 파일을 생성하고 싶습니다. 나는 보통 프레임 워크 (django, scrapy)가 이런 종류의 컨벤션을 가지고 있기 때문에 이것을한다.

├ ... 
├── pve 
│ ├── blahblah 
│ │ ├── TestDefinition.py 
│ │ ├── TestDefinition.pyc 
│ │ ├── __init__.py 
│ │ └── __init__.pyc 
│ └── pve.py 
├── src 
│ └── definitions 
│  └── THISFILE.yml 
└── settings.py 



# settings.py 

import os 
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) 
DEFINITIONS_ROOT = os.path.join(PROJECT_ROOT, 'src', 'definitions') 


from myproject import settings 
settings.DEFINITIONS_ROOT 
+0

쿨 - 좋은 아이디어. 저는 파이썬 방법을 배우기 위해 다른 언어에서 너무 많은 규칙을 배우지 않고 배우려고 노력하고 있으므로 .py noob입니다. ㅎ. –

+3

@ dm03514 여기서 'myproject'는'pve '와'src '폴더가 들어있는 프로젝트 루트 폴더입니다. 비슷한 것을 시도하고 있지만 루트 디렉토리에서 파일을 가져 오려면'__init__' 파일을 프로젝트 루트에 두어야합니다. 그것은 권위가 있습니까? 감사. – akskap