본문 바로가기
Python

[Python 기초] 파이썬 모듈 - sys.path 와 path.append() / 패키지 (packge)

by dev수니 2021. 4. 4.
반응형

 

 

 

 1  모듈 경로 추가방법

 

 

 

프롬프트에서 import sys 해준 후 sys.path 해주면 파이썬 라이브러리가 설치되어 있는 디렉터리를 보여 준다.

 

불러올 모듈의 디렉터리가 동일한 곳이 아닐 경우 모듈 파일을 아무리 import 해준다고 해도 해당 파일이 어디있는지 찾을 수 없기 때문에 에러가 발생한다.

 

 

 

 

 

파일의 경로 탐색 방법은 다음과 같다.

sys 를 import 해준 후 sys.path 로 현재 접근가능한 디텍터리를 확인 할 수 있다.

 

 

 

 

그리고 디렉터리를 추가해줄 경우 다음과 같이 작성해주면 된다.

sys.path.append("설정할 경로")

 

 

 

 

예를들어 C드라이브 내에 폴더 AAA를 만들고 그곳에 접근하고자 한다면 다음과 같이 작성한다.

sys.path.append("C:\\AAA")

 

 

 

 

그리고 sys.path 로 접근가능한 디렉토리를 확인해보면 

위와 같이 C:\\AAA 가 추가된 것을 확인할 수 있다. 

여기서 주의해야 할 점은 \\ 써야 한다는 것인데 파일탐색기에서 그냥 주소를 복사하면 C:\AAA라고 복사되는데 파이썬에서는 이를 문자열로 인식하기 때문에 \ 대신 \\를 써줘야한다.

 

 

 

 

 


 

 

 

 

 2  패키지 (packge)

 

 

 

관련있는 모듈들을 묶어놓은 집합이다.

모듈을 디렉토리형식으로 구조화한 것으로 모듈들은 넣어둔 디렉토리명이 패키지명이 된다.

 

 

 

ex) Lib 폴더 내에 tkinter 를 들어가면 ttk나 font 등등의 모듈들이 있는데 이 모듈을 감싸놓은 tkinter가 패키지이다.

 

 

 

모듈의 이름은 동일할 수가 없다.


서로 다른 작성자가 작성한 모듈명이 동일하지 않을 경우는 매우 적기 때문에 이를 해결하기 위해 같은 기능을 가진 모듈끼리 폴더에 묶고 이를 패키지 형식으로 사용하는 것이다.

 

 

 

 

 

 


 

 

 

 

Ex 예제

 

 

 

# 먼저 C드라이브의 AAA 라이브러리를 추가해준다.

 

 

 

 

# 그 다음 AAA폴더에 test1.py 모듈을 다음과 같이 작성후 생성해준다.

 

 

 

 

# 그리고 test1.py 을 import 하고 show()를 호출한다.

그럼 위와 같이 show()메서드가 호출된다.

 

 

 

 

# 하지만 메서드나 변수, 클래스 등등 모듈 내의 요소들을 호출할 때 test1.show()처럼 항상 해당 요소가 어디에서 왔는지 경로를 적어줘야 한다. 따라서 다음과 같이 작성한다.

이처럼 from import * 를 사용하면 모듈 내의 요소들을 전부 해당 파일로 불러오기 때문에 모듈 내의 메서드, 함수, 클래스 등을 사용할 경우 따로 경로를 붙여주지 않아도 된다.  

 

 

 

# 그리고 AAA폴더 내에 BBB폴더를 만들고 다음과 같이 test1.py 모듈 파일을 생성해준다.

이전 AAA 폴더 내의 test1파일과 같은 show()메서드에서 print()내용만 고쳐주었다.

 

 

 

 

# 그리고 다음과 같이 BBB폴더 내 test1.py 모듈 파일을 import 하고 show()를 호출해준다.

BBB 폴더 내의 test1의 show()메서드가 호출되었다.

 

# 하지만 위의 경우 모듈내의 요소를 사용할 때 경로를 알려줘야 하는 번거로움이 있으므로 다음과 같이 작성해준다.

BBB 폴더의 test1파일 내의 요소들을 모두 불러왔기에 show()메서드만 호출해도 실행된다.

 

 

# 그리고 BBB 폴더 내에 CCC폴더를 추가하고 test1.py 모듈 파일을 다음과 같이 클래스를 추가하고 생성해준다.

생성자를 통해 인스턴스 생성 시 인수를 받고 받은 인수를 생성자를 통해 self.a 에 저장 후 메서드 __str로 a값을  

 

 

# 다음과 같이 from import를 이용해서 test1 모듈 내의 요소를 가져오고 호출해준다.

 

 

 

 

 

반응형

댓글