본문 바로가기
프로그래밍/Python

[Python] 내가 만든 파이썬(Python) 파일(.py) 임포트하기

by 부자 꽁냥이 2022. 4. 5.

파이썬은 다른 개발자분들이 만들어 놓은 멋진 라이브러리(또는 패키지)들이 굉장히 많다. 우리는 pip install과 같은 명령을 통해 손쉽게 설치하여 라이브러리(또는 패키지)를 사용한다.

 

근데 종종 자기가 만들어 놓은 유용한 함수를 한데 모아서 이를 임포트해서 쓸 경우가 있다. 이 경우 쉽게 임포트할 수 있는 방법을 알아보고자 한다(물론 더 쉬운 방법이 있을 수 있다. 모든 방법을 내가 다 알고 있는 건 아니니까 ㅎㅎ).

 

1. 파이썬(Python) 파일 만들기

2. 임포트 하기


   1. 파이썬(Python) 파일 만들기

먼저 아래와 같은 예제용 파이썬 파일을 my_python_file.py 라는 이름으로 만들었다. 두 수를 더하는 함수, 이름과 나이를 입력받아야 하는 사람 클래스(Person)를 만들어 주었다.

 

#!/usr/bin/env python
# coding: utf-8

def add_func(a, b):
    return a+b

class Person():
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.is_alive = True
        
    def one_year_later(self):
        self.age += 1
        
    def change_name(self, name):
        self.name = name
        
    def die(self):
        self.is_alive = False

 

이제 내가 만든 파이썬 파일을 임포트 해보자.


   2. 임포트 하기

먼저 상황을 두가지로 나누어 보려고 한다. 1) 임포트 하려는 파일이 내 코드 파일과 같은 폴더에 있는 경우, 2) 다른 폴더에서 임포트 하는 경우이다. 이렇게 나눈 이유는 각 경우마다 임포트 방식이 조금 다르기 때문이다.

1) 임포트 하려는 파일이 내 코드 파일과 같은 폴더에 있는 경우

먼저 내 코드 파일(여기서는 주피터 노트북)과 내가 임포트 하려는 파이썬 파일이 같은 폴더에 있는 경우에 임포트 하는 방법을 알아보자. 쉽게 말하면 아래와 같은 상황이다.

 

이 경우에는 망설일 필요 없이 바로 임포트하면 된다.

from my_python_file import add_func, Person

print(add_func(3,4))

person = Person('꽁냥이', 27)
print(person.name)
print(person.age)

 

실행 결과

 

문제없이 임포트되어 잘 실행되는 것을 알 수 있다.

반응형

2) 다른 폴더에서 임포트 하는 경우

만약 임포트하려는 파이썬 파일이 다른 곳에 있다면 어떻게 하면 될까? 

 

먼저 임포트할 파일 my_python_file2.py가 아래와 같은 경로에 있다고 하자. my_python_file2.py은 my_python_file.py를 복사한 다음 이름만 바꾼 것이다.

 

 

이 경우에 내가 제안하는 방법은 sys 모듈을 이용하는 것이다. 아래와 같이 sys.path 에다가 파이썬 파일이 있는 폴더를 추가해주면 된다. 그러고 나서 임포트 해주면 끝이다.

 

import sys
sys.path.append('D:/myspace/blog/code/python/here/')

from my_python_file2 import add_func, Person

print(add_func(3,4))

person = Person('꽁냥이', 27)
print(person.name)
print(person.age)

 

실행 결과

처음에 다른 폴더에 있는 파이썬 파일을 임포트하려고 할 때 환경변수를 설정해야 할 것 같은 아주 어려운 느낌이 들었다. 하지만 이렇게 간단하게 해결할 수 있었다.

 

오늘도 난 우물안 개구리였다는 것을 느끼며 또 하나를 배울 수 있음에 기분이 너무 좋아진다.

 

 


댓글


맨 위로