2017-12-11 3 views
0

내가 상대 수입 일회성 사용 사례를 독서의 피곤 해요 그래서 내가 울부 짖는 소리 위의 디렉토리 에서 상대 가져 오기를 수행하는 방법의 예와 을 얻을 수있는 질문으로 거라고 생각 모듈 함수와 클래스 객체를 가져 오는 데 사용됩니다.Python3 상대적으로 수입

디렉토리 구조 :

. 
├── lib 
│   ├── __init__.py 
│   └── bar.py 
└── src 
    ├── main.py 
    └── srclib 
     ├── __init__.py 
     └── foo.py 

bar.py

def BarFunc(): 
     print("src Bar function") 

class BarClass(): 
     def __inti__(self): 
       print("src Bar Class") 
     def test(self): 
       print("BarClass working") 

foo.py

def FooFunction(): 
     print("srclib Foo function") 

class FooClass(): 
     def __init__(self): 
       print("srclib Foo Class") 
     def test(self): 
       print("FooClass working") 

질문 : 파이썬 3에서이 유스 케이스를 가져 오기위한 구문은 무엇입니까?

main.py 그것은 모두 당신이에서 python 인터프리터를 시작 위치에 따라 달라집니다

# What is the syntax to import in python 3? 

# I want to be able to call FooFunc() 
foo.FooFunc() 

# I want to be able to create a FooClass() object 
foo_class = foo.FooClass() 
foo_class.test() 

# I want to be able to call FooFunc() 
bar.BarFunc() 

# I want to be able to create a BarClass() object 
bar_class = bar.BarClass() 
bar_class.test() 
+2

상대적 가져 오기는 디렉토리에 관한 것이 아닙니다. 이들은 디렉토리 탐색 메커니즘이 아닙니다. 그들은 파일 시스템에있는 것이 아니라 가져올 것만을 말합니다. – user2357112

+0

오케이. 난 몰랐어. 나는 여전히 내 디렉토리 구조를 주 주어진 내 lib 파일을 어떻게 가져올 지 궁금 하네. – 1N5818

+0

패키지의 일부가 아니기 때문에 실제로'main.py'에서 상대적 가져 오기를 수행 할 수 없습니다. – user2357112

답변

0

. 파일에서

src/srclib/__init__.py 추가 : 귀하의 경우에, 나는 다음과 같이 변경하면서 프로젝트의 루트 디렉토리에서 해석기를 시작하는 방법을 제안

from . import foo 

이 명시 적으로 언급하는 일을하는 이유 당신의 __init__.py 모듈에서 가져올 내용. 당신의 main.py 파일에서

는 다음을 추가 :

from lib import bar 
from src.srclib import foo 

희망이 도움이!