2014-01-29 9 views
0

최근에 새로운 Python 프로젝트가 시작되었습니다.Python 가져 오기 모듈

동일한 디렉토리에서 모듈을 가져 오려고하는 가져 오기 모듈 오류를 해결 중입니다.

나는 here 해결책을 따르고 있었지만 상황이 약간 달라서 결과적으로 스크립트가 실행되지 않습니다.

from dir-parent.module1 import class1 

나는 이것을 사용하여 스크립트를 실행하면 다음과 같이 내가 같은 디렉토리에이 모듈을 수입하고 내 main.py 스크립트에서

dir-parent 
    ->dir-child-1 
    ->dir-child-2 
    ->dir-child-3 
    ->__init__.py (to let python now that I can import modules from here) 
    ->module1 
    ->module2 
    ->module3 
    ->module4 
    ->main.py 

다음과 같이

내 프로젝트 디렉토리입니다 메서드를 호출하면 dir-parent.module1이라는 모듈이 없다는 import 오류가 발생합니다 (존재하기 때문에 잘못되었습니다).

그때에 import 문을 변경 :

from module1 import class1 

을이 오류를 해결하기 위해 듯하지만, 내가 작업하고있는 코드는 2.5 년 이상 사용되어하고있다 항상을 통해 모듈을 수입했다 이 방법은 코드에서 dir-parent 디렉토리를 참조합니다.

이 가져 오기 문 및 기존 코드를 변경하지 않고도이 문제를 해결하기 위해 누락되었거나 해결해야 할 것이 있는지 궁금합니다.

편집 : 나는 PyCharm을 사용하고 당신이 변경되지 않은 코드를 유지하려면 PyCharm

+1

파이썬 모듈 검색 경로에'dir-parent'가 들어있는 디렉토리가 있습니까? – BrenBarn

+0

아마도'dir-parent'에서 main.py를 실행할 것입니다. 하나의 디렉토리로 변경하고'python -m dir_parent.main'을 실행 해보십시오. 이 훌륭한 블로그 게시물에서 자세한 정보를 찾을 수 있습니다 : http://blog.habnab.it/blog/2013/07/21/python-packages-and-you/ –

답변

1

을 실행하고, 당신이 PYTHONPATH에 dir-parent을 추가해야합니다 생각합니다. 예를 들어, 귀하의 main.py 상단에 다음을 추가하십시오 :

import os, sys 

parent_dir = os.path.abspath(os.path.dirname(__file__)) # get parent_dir path 
sys.path.append(parent_dir) 
+0

그렇게 되니? parent_dir = os.path.abspath (os.path.dirname (C : \ dev \ hpact \ src)) 문법이 유효하지 않다고 불평합니다. Windows 컴퓨터를 사용하고 있습니다. – SeekingAlpha

+0

아니요, 단순히 복사하여 붙여 넣기 만하면됩니다. '__file__'은 현재 스크립트를 참조하는 변수입니다. –

+0

'parent_dir = os.path.abspath (os.path.dirname (__ file__))' sys.path.append ("C : \ dev \ hpact \ src \ hpact")는 여전히 동일한 문제를 호소합니다 – SeekingAlpha

0

파이썬의 가져 오기 및 경로는 고통입니다. 이것은 메인이있는 모듈에서 내가하는 일입니다. 나는 pythonic 전혀 모른다.

# Add the parent directory to the path 
CURRENTDIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) 
if CURRENTDIR not in sys.path: 
    sys.path.append(CURRENTDIR)