직접 만든 패키지 설치하기

Python 패키지 개발하기

James Fulton

Climate informatics researcher

왜 직접 만든 패키지를 설치해야 할까요?

example_script.py 내부

import mysklearn

하위 패키지가 있는 패키지의 디렉터리 트리

home/
|-- mysklearn            <-- 같은 디렉터리
|  |-- __init__.py
|  |-- preprocessing
|  |   |-- __init__.py
|  |   |-- normalize.py
|  |   |-- standardize.py
|  |-- regression
|  |   |-- __init__.py
|  |   |-- regression.py
|  `-- utils.py
|-- example_script.py    <-- 같은 디렉터리
Python 패키지 개발하기

왜 직접 만든 패키지를 설치해야 할까요?

example_script.py 내부

import mysklearn
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'mysklearn'

디렉터리 트리

home/
|-- mypackages
|   |-- mysklearn     <---
|       |-- __init__.py
|       |-- preprocessing
|       |   |-- __init__.py
|       |   |-- normalize.py
|       |   |-- standardize.py
|       |-- regression
|           |-- __init__.py
|           |-- regression.py
`-- myscripts
    `-- example_script.py     <---
Python 패키지 개발하기

setup.py

  • 패키지 설치에 사용됩니다
  • 패키지 메타데이터를 포함합니다
Python 패키지 개발하기

패키지 디렉터리 구조

하위 패키지가 있는 패키지의 디렉터리 트리


    mysklearn/
    |-- __init__.py
    |-- preprocessing
    |   |-- __init__.py
    |   |-- normalize.py
    |   |-- standardize.py
    |-- regression
    |   |-- __init__.py
    |   |-- regression.py
    |-- utils.py

Python 패키지 개발하기

패키지 디렉터리 구조

하위 패키지가 있는 패키지의 디렉터리 트리

mysklearn/      <-- 바깥 디렉터리
|-- mysklearn   <--- 내부 소스 코드 디렉터리
    |-- __init__.py
    |-- preprocessing
    |   |-- __init__.py
    |   |-- normalize.py
    |   |-- standardize.py
    |-- regression
    |   |-- __init__.py
    |   |-- regression.py
    |-- utils.py

Python 패키지 개발하기

패키지 디렉터리 구조

하위 패키지가 있는 패키지의 디렉터리 트리

mysklearn/      <-- 바깥 디렉터리
|-- mysklearn   <--- 내부 소스 코드 디렉터리
|   |-- __init__.py
|   |-- preprocessing
|   |   |-- __init__.py
|   |   |-- normalize.py
|   |   |-- standardize.py
|   |-- regression
|   |   |-- __init__.py
|   |   |-- regression.py
|   |-- utils.py
|-- setup.py   <-- 바깥쪽의 설정 스크립트
Python 패키지 개발하기

setup.py 내부

# Import required functions
from setuptools import setup


# Call setup function setup(
author="James Fulton",
description="A complete package for linear regression.",
name="mysklearn",
version="0.1.0",
)

버전 번호 = (메이저) . (마이너) . (패치)

Python 패키지 개발하기

setup.py 내부

# Import required functions
from setuptools import setup, find_packages

# Call setup function
setup(
    author="James Fulton",
    description="A complete package for linear regression.",
    name="mysklearn",
    version="0.1.0",

packages=find_packages(include=["mysklearn", "mysklearn.*"]),
)
Python 패키지 개발하기

편집 가능 설치

pip install -e .
  • . = 현재 디렉터리의 패키지
  • -e = 편집 가능 설치

하위 패키지가 있는 패키지의 디렉터리 트리

mysklearn/  <-- 여기로 이동
|-- mysklearn
|   |-- __init__.py
|   |-- preprocessing
|   |   |-- __init__.py
|   |   |-- normalize.py
|   |   |-- standardize.py
|   |-- regression
|   |   |-- __init__.py
|   |   |-- regression.py
|   |-- utils.py
|-- setup.py
Python 패키지 개발하기

Ayo berlatih!

Python 패키지 개발하기

Preparing Video For Download...