Manifest

1. 개요

  • 내용 발췌 원본 : pyscaffold.org
  • BillMaker를 PyScaffold로 시작했는데.. 정리해놓은 문서가 없음
  • 처음부터 다시 만들며 정리해보기로 함.

PyScaffold를 사용하는 목적

  • PyScaffold는 고품질의 Python 패키지를 시작하기 위한 Python 프로젝트 생성기 이다
  • PyScaffold를 사용하면..
    • PyPI에 공유 가능하도록 준비시켜주고
    • pip로 내 패키지를 설치할수 있도록 해준다
    • 또한 Python ecosystem에서 사용하는 best tool과 practices를 손쉽게 사용할 수 있다
    • 당신의 팀이 제정신이고 행복하며, 생산성이 있도록 유지할 수 있게 도와준다
  • Note

2. 전개

기본 환경

  • Windows 환경에서 진행할 것임
  • PyScaffold를 사용하기 위해 할 일
    • Python 독립 환경 설치
    • PyScaffold 설치

Windows 환경

  • Windows Terminal로 Anaconda 환경을 꾸밈
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    {
        // 참고 : https://dev.to/voodu/windows-terminal-conda-d3e
        "name": "Anaconda with Powershell",
        "suppressApplicationTitle": true,
        "startingDirectory": "D:/App/Anaconda3/",
        "commandline": "powershell.exe -ExecutionPolicy ByPass -NoExit -Command \"& 'D:/App/Anaconda3/shell/condabin/conda-hook.ps1' ; conda activate 'D:/App/Anaconda3'; conda env list \"",
        "hidden": false,
        "icon": "%OneDrive%/사진/WindowsTerminalImages/anaconda.png",
        "backgroundImage": "%OneDrive%/사진/WindowsTerminalImages/conda_cheat_sheet.png",
        "backgroundImageStretchMode": "none",
        "backgroundImageAlignment": "topRight" 
    },
    
  • 환경 설정 ( BillMaker2를 프로젝트명으로 할 때 )
    1
    2
    3
    
    > conda create --name BillMaker2 python=3.7
    > conda activate BillMaker2
    > conda install -c conda-forge pyscaffold
    

설치할 것이 좀 더 있다

PyScaffold version 4일 경우

  • 현재 설치된 패키지를 확인하기 위해 shell에 conda list 명령 실행
    • python v3.9 & pyscaffold v4 일때 캡춰 (2022-02-21)

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      
      ❯ conda list
      # packages in environment at D:\App\Anaconda3\envs\myproject:
      #
      # Name                    Version                   Build  Channel
      appdirs                   1.4.4              pyh9f0ad1d_0    conda-forge
      ca-certificates           2021.10.8            h5b45459_0    conda-forge
      certifi                   2021.10.8        py39hcbf5309_1    conda-forge
      configupdater             3.0.1              pyhd8ed1ab_0    conda-forge
      importlib-metadata        4.11.1           py39hcbf5309_0    conda-forge
      openssl                   1.1.1l               h8ffe710_0    conda-forge
      packaging                 21.3               pyhd8ed1ab_0    conda-forge
      pip                       22.0.3                   pypi_0    pypi
      pyparsing                 3.0.7              pyhd8ed1ab_0    conda-forge
      pyscaffold                4.1.4              pyhd8ed1ab_0    conda-forge
      python                    3.9.7                h6244533_1
      python_abi                3.9                      2_cp39    conda-forge
      setuptools                58.0.4           py39haa95532_0
      setuptools-scm            6.4.2              pyhd8ed1ab_0    conda-forge
      sqlite                    3.37.2               h2bbff1b_0
      tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
      tomlkit                   0.10.0             pyha770c72_0    conda-forge
      typing                    3.10.0.0           pyhd8ed1ab_0    conda-forge
      tzdata                    2021e                hda174b7_0
      vc                        14.2                 h21ff451_1
      vs2015_runtime            14.27.29016          h5e58377_2
      wheel                     0.37.1             pyhd3eb1b0_0
      wincertstore              0.2              py39haa95532_2
      zipp                      3.7.0              pyhd8ed1ab_1    conda-forge
      
  • tox를 설치하려면 conda install -c conda-forge tox 명령을 실행하라. 아래 2022-02-22일자 의존성확인
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    
    ❯ conda install -c conda-forge tox
    Collecting package metadata (current_repodata.json): done
    Solving environment: done
    
    ## Package Plan ##
    
      environment location: D:\App\Anaconda3\envs\myproject
    
      added / updated specs:
        - tox
    
    
    The following packages will be downloaded:
    
        package                    |            build
        ---------------------------|-----------------
        colorama-0.4.4             |     pyh9f0ad1d_0          18 KB  conda-forge
        distlib-0.3.4              |     pyhd8ed1ab_0         371 KB  conda-forge
        filelock-3.6.0             |     pyhd8ed1ab_0          12 KB  conda-forge
        pip-22.0.3                 |     pyhd8ed1ab_0         1.5 MB  conda-forge
        platformdirs-2.5.1         |     pyhd8ed1ab_0          15 KB  conda-forge
        pluggy-0.13.1              |   py39hcbf5309_4          30 KB  conda-forge
        py-1.11.0                  |     pyh6c4a22f_0          74 KB  conda-forge
        six-1.16.0                 |     pyh6c4a22f_0          14 KB  conda-forge
        toml-0.10.2                |     pyhd8ed1ab_0          18 KB  conda-forge
        tox-3.24.5                 |   py39hcbf5309_0         157 KB  conda-forge
        virtualenv-20.13.1         |   py39hcbf5309_0         8.0 MB  conda-forge
        ------------------------------------------------------------
                                               Total:        10.2 MB
    
    The following NEW packages will be INSTALLED:
    
      colorama           conda-forge/noarch::colorama-0.4.4-pyh9f0ad1d_0
      distlib            conda-forge/noarch::distlib-0.3.4-pyhd8ed1ab_0
      filelock           conda-forge/noarch::filelock-3.6.0-pyhd8ed1ab_0
      pip                conda-forge/noarch::pip-22.0.3-pyhd8ed1ab_0
      platformdirs       conda-forge/noarch::platformdirs-2.5.1-pyhd8ed1ab_0
      pluggy             conda-forge/win-64::pluggy-0.13.1-py39hcbf5309_4
      py                 conda-forge/noarch::py-1.11.0-pyh6c4a22f_0
      six                conda-forge/noarch::six-1.16.0-pyh6c4a22f_0
      toml               conda-forge/noarch::toml-0.10.2-pyhd8ed1ab_0
      tox                conda-forge/win-64::tox-3.24.5-py39hcbf5309_0
      virtualenv         conda-forge/win-64::virtualenv-20.13.1-py39hcbf5309_0
    
    
    Proceed ([y]/n)?
    
  • tox가 알아서 dependencies까지 설치해 준다고 하니 일단 추가로 설치할 패키지는 없음

PyScaffold Version 3일 경우

  • 현재 설치된 패키지를 확인하기 위해 shell에 conda list 명령 실행

    • python v3.7 & pyscaffold v3 일때 캡춰

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      
      ❯ conda list
      # packages in environment at D:\App\Anaconda3\envs\billmaker2:
      #
      # Name                    Version                   Build  Channel
      billmaker2                0.0.post0.dev1+g814211d.dirty          pypi_0    pypi
      ca-certificates           2020.6.20            hecda079_0    conda-forge
      certifi                   2020.6.20        py37hf50a25e_2    conda-forge
      openssl                   1.1.1h               he774522_0    conda-forge
      pip                       20.2.4                   py37_0
      pyscaffold                3.2.3                      py_0    conda-forge
      python                    3.7.9                h60c2a47_0
      python_abi                3.7                     1_cp37m    conda-forge
      setuptools                50.3.0           py37h9490d1a_1
      sqlite                    3.33.0               h2a8f88b_0
      vc                        14.1                 h0510ff6_4
      vs2015_runtime            14.16.27012          hf0eaf9b_3
      wheel                     0.35.1                     py_0
      wincertstore              0.2                      py37_0
      zlib                      1.2.11               h62dcd97_4 
      
  • 아직 아래 PyScaffold에서 추천하는 추가 프로그램이 깔리지 않았다.
  • conda install conda-forge::<Package Name> 명령으로 각각 추가 설치한다

  • 추가 프로그램 설치 후에 환경 설정2 ( BillMaker2를 프로젝트명으로 할 때 )
    1
    2
    
    > putup billmaker2
    > python setup.py develop
    
    • 참고 : pyscaffold github
    • 참고2 : Uploading to PyPI
      • python setup.py develop은 이전 가이드 내용으로 현재(2022-02-22)는 강력하게 비추천되고 있다.
      • 자세한 사항은 링크 내용을 확인해보자

테스트로 Console application 만들어 보기

  • 위에서 기본적인 설치및 설정을 완료했다면..
    • Pyscaffold에서 기본제공하는 fibonacci console application을 만들어볼 수 있다.
  • project root > src > billmaekr2 > skeleton.py 로 가서 제일 위의 주석을 읽어본다.
    • project root > setup.cfg 수정해보라고 나온다.
      • setup.cfg > [options.entry_points] 에서 다음 주석처리된 부분 활성화하도록 수정
        console_scripts =
            fibonacci = billmaker2.skeleton:run
        
  1. 프로젝트 root위치 cmd에서 python setup.py install을 실행
    1
    
      > python setup.py install
    
  2. cmd에서 아래와 같이 실행하면 결과가 나옴
    1
    2
    
      > fibonacci 3
      The 3-th Fibonacci number is 2
    
  3. ../Anaconda3/envs//Scripts 에 "fibonacci.exe"가 만들어진 것을 확인한다.
  4. 완료 !!

###