모듈(.py) 안에서 library 설치

  • Colab 같은 클라우드 환경 사용 비중이 늘어나고 있습니다.
  • 클라우드에 기본으로 설치되지 않은 라이브러리를 설치하는 방법을 알아봅니다.
  • pip도 import 해서 사용할 수 있습니다.

1. 클라우드 환경

  • Google Colab이나 Streamlit cloud 처럼 클라우드 기반 서비스 활용 비율이 늘어납니다.
  • 장점이 많지만 서버가 물리적으로 고정되어 있지 않다 보니 필요한 라이브러리가 없을 때가 많습니다.
  • 일일이 확인하면서 !pip install {library}를 실행하기가 번거롭습니다.
  • 그렇다고 requirements.txt를 쓸 만큼 큰 일도 아닐 때 간단하게 처리하고 싶습니다.

2. import pip

  • 라이브러리 설치에 사용하는 pip는 import도 가능합니다.
  • 노트북 환경이건 모듈로 사용되는 .py 파일이건 무관합니다.
  • 프로그램 시작 부분에 아래 코드를 삽입해 import가 안 되어 있는 라이브러리를 설치할 수 있습니다.
  • 아래는 geopandas를 사용하고자 설치하는 코드입니다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import pip

    def install(package, upgrade=True):
    # package install with upgrade or not
    if hasattr(pip, 'main'):
    if upgrade:
    pip.main(['install', '--upgrade', package])
    else:
    pip.main(['install', package])
    else:
    if upgrade:
    pip._internal.main(['install', '--upgrade', package])
    else:
    pip._internal.main(['install', package])

    # import package
    try:
    eval(f"import {package}")
    except ModuleNotFoundError:
    print("# Package name might be differnt. please check it again.")
    except Exception as e:
    print(e)

3. GeoPandas 예제: Choro legends

GeoPandas Example Gallery: Choro legends

  • 같은 요령으로 Colab 기본 설치 라이브러리가 아닌 mapclassifylibpysal을 설치합니다.
  • 이후 아래 코드를 실행하면 깔끔하게 실행됩니다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    %matplotlib inline

    import matplotlib.pyplot as plt
    from geopandas import read_file

    _ = libpysal.examples.load_example('South')
    pth = libpysal.examples.get_path('south.shp')
    df = read_file(pth)

    fig, ax = plt.subplots(figsize=(10, 5), constrained_layout=True)
    df.plot(column='HR60', scheme='QUANTILES', k=4, \
    cmap='BuPu', legend=True,
    legend_kwds={'loc': 'center left', 'bbox_to_anchor':(1,0.5)},
    ax=ax)

    fig.savefig("13_install_01.png")


도움이 되셨나요? 카페인을 투입하시면 다음 포스팅으로 변환됩니다

Share