반응형

파이썬에서 "패키지"는 관련된 모듈들의 집합을 의미합니다.

모듈은 파이썬 코드를 담고 있는 파일이며,

패키지는 이러한 모듈들을 디렉토리 구조 안에 구성하여 더 큰 범위의 프로젝트를 조직화하는 방법입니다.

간단히 말해, 패키지는 파이썬 프로젝트를 모듈로 나누어 관리하기 쉽게 만들어 줍니다.

이는 큰 프로젝트를 여러 모듈로 나누어 각 모듈을 개별적으로 유지보수하고 재사용할 수 있도록 도와줍니다.

패키지는 일반적으로 다음과 같은 구조를 가지고 있습니다:

  1. __init__.py: 이 파일은 패키지의 초기화 파일로, 해당 디렉토리를 패키지로 취급하도록 파이썬에게 알려줍니다. 이 파일이 없으면 파이썬은 디렉토리를 패키지로 취급하지 않습니다. 이 파일 안에는 패키지의 초기화 코드가 들어갈 수 있습니다.
  2. 모듈 파일들: 패키지 안에 있는 각 모듈은 각각 하나의 파이썬 파일입니다. 이 파일들은 패키지의 기능을 구현합니다.
  3. 하위 패키지들: 패키지 안에는 또 다른 패키지들이 존재할 수 있습니다. 이것은 패키지를 더 세분화하여 관련된 모듈들을 더욱 구조화하는 데 도움이 됩니다.

예를 들어, "requests"라는 외부 라이브러리는 HTTP 요청을 보내는 데 사용됩니다. 이 라이브러리는 "requests"라는 패키지 안에 여러 모듈과 하위 패키지를 가지고 있습니다. 이러한 구조는 코드를 조직화하고 관리하기 쉽게 만들어 줍니다.

 

패키지의 생성

패키지를 만드는 것은 파이썬에서 모듈을 만드는 것과 매우 유사합니다. 다음은 패키지를 만드는 단계입니다:

  1. 프로젝트 디렉토리 생성: 먼저 새로운 디렉토리를 만들어서 패키지를 담을 공간을 마련합니다. 이 디렉토리 이름이 패키지의 이름이 됩니다.
  2. __init__.py 파일 생성: 패키지 디렉토리 안에 __init__.py 파일을 만듭니다. 이 파일은 패키지를 초기화하는 데 사용됩니다. 만약 패키지에 초기화 코드가 필요하지 않다면 빈 파일을 생성해도 됩니다.
  3. 모듈 추가: 필요한 기능을 구현한 파이썬 파일을 모듈로 추가합니다. 이 모듈들은 패키지 디렉토리 안에 위치해야 합니다.
  4. 설치 또는 배포: 만든 패키지를 사용하려는 다른 사용자들에게 제공하려면 이를 설치하거나 배포해야 합니다. 이를 위해서는 setup.py나 setup.cfg와 같은 배포 설정 파일을 작성하고, pip와 같은 도구를 사용하여 패키지를 설치할 수 있습니다.

예를 들어, package_a라는 패키지를 만든다고 가정해 봅시다. 이를 위해서는 다음과 같은 구조를 가질 것입니다

package_a/
    __init__.py
    module1.py
    module2.py
    ...

 

여기서 package_a는 패키지의 이름이며, module1.py, module2.py는 패키지의 모듈입니다.

간단한 예시를 통해 이를 구체화해 보겠습니다:

  1. package_a  디렉토리를 생성합니다.
  2. package_a  디렉토리 안에 __init__.py 파일을 만듭니다. 이 파일은 비어있어도 됩니다.
  3. package_a  디렉토리 안에 필요한 모듈 파일들(module1.py, module2.py 등)을 추가합니다. 이 파일들은 패키지의 기능을 정의합니다.

만약 다른 사람들이 이 패키지를 설치해서 사용할 수 있도록 배포하려면, 추가적인 단계가 필요합니다.

이는 setuptools나 distutils를 사용하여 패키지를 배포하는 과정을 포함합니다.

 

패키지 안의 함수를 실행하는 방법

패키지 안에 있는 함수를 실행하는 것은 해당 함수가 정의된 모듈을 불러와서 호출하는 것과 같습니다.

함수를 실행하는 과정은 다음과 같습니다:

 

모듈 불러오기

 

먼저 실행하려는 함수가 정의된 모듈을 불러와야 합니다. 이를 위해서는 import 문을 사용합니다.

예를 들어, package_a 패키지 안에 module1.py 모듈에 my_function이라는 함수가 있다고 가정해 보겠습니다.

import package_a.module1

함수호출

이제 모듈에 정의된 함수를 호출할 수 있습니다. 함수를 호출할 때는 모듈 이름과 함수 이름을 사용합니다.

package_a.module1.my_function()

 

위의 예시에서 my_function()을 호출하면 해당 함수가 실행됩니다.

만약 함수가 인자를 받는다면, 해당 인자를 전달하여 호출하면 됩니다.

package_a.module1.my_function(argument1, argument2)

 

위 코드에서 argument1과 argument2는 함수가 받는 인자들입니다.

또는 모듈 이름을 별칭(alias)으로 지정하여 더 간결하게 사용할 수도 있습니다.

import package_a.module1 as mod1
mod1.my_function()

 

이렇게 하면 module1을 mod1이라는 짧은 이름으로 사용할 수 있습니다.

 

패키지 내의 다른 모듈의 함수 호출

패키지 안에 다른 모듈에 정의된 함수를 호출할 때는

마찬가지로 위와 같은 방법으로 모듈을 불러와서 함수를 호출합니다.

단지 모듈 이름을 패키지 이름과 함께 적어주면 됩니다.

import package_a.other_module
package_a.other_module.another_function()

 

이렇게 하면 package_a  패키지 안에 있는 other_module 모듈에 정의된

another_function을 호출합니다.

위와 같은 방법을 사용하여 패키지 안에 있는 함수를 실행할 수 있습니다.

반응형

+ Recent posts