2017-10-06 7 views
1

Python 3.6.1을 실행 중이고 프로젝트에서 다른 패키지에서 가져올 파일 (world.py)을 가져 오려고합니다. Python 3에서 중첩 된 패키지간에 가져 오기

내 디렉토리 구조 :

+-- test_project 
| +-- sub_project1 
| | +-- __init__.py 
| | +-- hello.py 
| +-- sub_project2 
| | +-- __init__.py 
| | +-- world.py 

hello.py :

def say_hello(): 
    return("Hello ") 

world.py는 :

from test_project.sub_project1.hello import say_hello 

print(say_hello() + "world!") 

나는 sub_project2 디렉토리로 가서 world.py를 실행, 나는이가 계속 :

ModuleNotFoundError: No module named 'test_project' 

가져 오기 문을 from sub_project1.hello import say_hello으로 다시 작성해 보았습니다. 나는 또한 내 PATH 환경 변수에 test_project 디렉토리가있는 시도했다. 나는 내 PATH에 test_project부모 디렉토리를 가지고 다녔습니다. 나는 내 경로에 sub_project2의 디렉토리를 가지고 시도했다. 나는 온라인으로 답변을 검색했는데 내가 누락 된 부분을 해결할 수는 없다.

내가 뭘 잘못하고 있니?

답변

1

당신은 sys.path

import sys 
sys.path.append('../sub_project1') 

from hello import say_hello 

print(say_hello() + "world!") 

출력에 "hello.py"의 경로를 추가해야

Hello world! 

소스가 here입니다. 이 토론은 정말 도움이됩니다.

편집 : "sub_project1는"__init__.py이 있기 때문에, 당신은 사용할 수 있습니다

import sys 
sys.path.append('..') #Adds upper directory sys.path 

from sub_project1.hello import say_hello 

print(say_hello() + "world!") 
+0

감사를 추가해야합니다,이 간단한 해결책처럼 보인다. 나는 파이썬을 좋아하지만, 꾸러미와 수입은 때로는 절대적인 고통이 될 수 있습니다 ... – Megdatronica

+0

당신을 진심으로 환영합니다. 동의하고 파이썬도 좋아합니다. 가시가없는 장미는 없습니다. 모든 언어에는 어려운면이 있습니다. 또한 위에 언급 한 링크를 읽는 것을 잊지 마세요. 가져 오기에 도움이됩니다. – Alperen

1

문제는 당신이 파이썬 경로에 프로젝트를 추가해야한다는 것입니다.

  1. 입력 스크립트 (또는 현재 디렉토리)를 포함하는 디렉토리를 : 그 이유는 파이썬이 처음이 위치에서 검색하는 것입니다.

  2. PYTHONPATH (쉘 변수 PATH와 동일한 구문으로 디렉토리 이름 목록).

  3. 설치 기본값입니다.

그래서, 당신은 그것을 위해 PYTHONPATH 환경 변수 디렉토리에 C:\Users\your_user\dir_before_test_project\