통일된 DataScience 폴더 구조 제공 및 가상환경 작업의 부담감 해소

Related tags

Deep Learning Lucas
Overview


Lucas

Hits


coded by linux shell

목차


Patch Note 📜


Team member

Contributors/People

ympark gbhwang cbchun
https://github.com/pym7857 https://github.com/gbhwang https://github.com/bermmie1000
  • You can see team member and github profile
  • You should probably find team member's lastest project



Requirements

  • python 3.xx



Mac버전 CookieCutter (autoenv)

🚫 주의
$> brew install autoenv 로 다운로드 받아서 실행시키면 터미널 고장납니다.
반드시 autoenv Github 에서 git clone 으로 다운받아 주세요. (현재 시점 21.3.24)

⚠️ mac버전만 소개합니다.

1. How to Install autoenv

$ git clone git://github.com/inishchith/autoenv.git ~/.autoenv

2.폴더 진입 시, activate 구현하기

$ echo 'source ~/.autoenv/activate.sh' >> ~/.zshrc
$ source ~/.zshrc

🔔 하단의.env파일은 현재 repo의 cookiecutter에서 자동으로 생성해줍니다. (스킵)

# .env 파일
echo "HELLO autoenv"
{
    source .dev-venv/bin/activate
    echo "virtual env is successfully activated!"
} ||
{
    echo "[virtual env start] is failed!"
}

.env파일 설정 후 첫 폴더 진입시 .env파일을 신뢰하고 실행할지 않을 지에 대한 동의가 나타납니다. autoenv 이 부분은 .env파일이 악의적으로 변경되었을때 사용자에게 알리기 위해서 있기 때문에 즐거운 마음으로 Y를 눌러줍시다.
이제 정상적으로 가상환경이 activate된 것을 확인할 수 있습니다.

3.폴더 탈출 시, deactivate 구현하기

$> vi ~/.zshrc

마지막줄에 다음의 명령어를 추가해줍니다.

export AUTOENV_ENABLE_LEAVE='"enabled"' 

🔔 하단의.env.leave파일은 현재 repo의 cookiecutter에서 자동으로 생성해줍니다. (스킵)

# .env.leave 파일
echo "BYEBYE"
{
    deactivate
    echo "virtual env is successfully deactivated!"
} ||
{
    echo "[virtual env quit] is failed!"
}

.env.leave파일 설정 후 해당 폴더에서 나가면
정상적으로 가상환경이 deactivate 되는 것을 확인할 수 있습니다.

4.Alias 설정하기

echo 'alias cookie="bash [각자 컴퓨터의 상대경로/cookie_cutter_project_dir.sh]"' >> ~/.zshrc
ex) echo 'alias cookie="bash /Users/gbhwang/Desktop/Project/Test/Lucas/mac/cookie_cutter_project_dir.sh"' >> ~/.zshrc

맥 파일경로 확인법을 참고하여
각자 mac폴더안의 cookie_cutter_project_dir.sh 파일의 경로를 확인하여 zshrc에 넣어주시면 됩니다.

이렇게 하면 cookie 명령어 만으로 간단하게 스크립트를 실행시킬 수 있게 됩니다.
위와 같이 설정하면 cookie [프로젝트 생성할 경로] [프로젝트 이름] 명령어로 프로젝트를 생성할 수 있게 됩니다.

5.How to Use

$> cd "where-you-want"
$> git clone https://github.com/LS-ELLO/Lucas.git
$> cd Lucas
$> cd mac

$> cookie [where-you-want] [your-project-name]
ex) $> cookie . test111



Windows버전 CookieCutter (ps-autoenv)

도움 주신 규본님 감사합니다.
ps-autoenv를 사용합니다.

1.How to install ps-autoenv

Powershell 실행 (관리자 권한 실행)

PS> Install-Module ps-autoenv
PS> Add-Content $PROFILE @("`n", "import-module ps-autoenv")

2.Alias 설정하기 (git-bash)

참조

  1. C:/Program Files/Git/etc/profile.d/aliases.sh 파일을 관리자 권한으로 Text Editor에 실행시킵니다.

  2. 다음의 명령어를 추가합니다.
    alias cookie='bash cookie_cutter_project_dir.sh의 상대경로'
    ex) alias cookie='bash D:/Lucas/windows/cookie_cutter_project_dir.sh'

    (aliases.sh)

    # Some good standards, which are not used if the user
    # creates his/her own .bashrc/.bash_profile
    
    # --show-control-chars: help showing Korean or accented characters
    alias ls='ls -F --color=auto --show-control-chars'
    alias ll='ls -l'
    alias cookie='bash [where-your-cookie_cutter_project_dir.sh]'
    
    case "$TERM" in
    ...

3.How to Use

Git Bash 실행

bash> cd "where-this-repo-downloaded"
bash> cd windows
bash> cookie [where-you-want] [your-project-name]
ex) cookie . 1bot

Powershell 실행

PS> Import-Module ps-autoenv
PS> cd "where-your-cookiecutter-project"
ex. PS> cd "C:\Users\ympark4\Documents\1bot"
PS> press 'Y'
🚫 PSSecurityException 오류 발생할때

https://extbrain.tistory.com/118 를 참조해서 해결주세요.



The resulting directory structure

The directory structure of your new project looks like this:

├── LICENSE
├── Makefile
├── README.md          ← The top-level README for developers using this project.
├── data
│   ├── external       ← Data from third party sources.
│   ├── interim        ← Intermediate data that has been transformed.
│   ├── processed      ← The final, canonical data sets for modeling.
│   └── raw            ← The original, immutable data dump.
├── docs               ← A default Sphinx project; see sphinx-doc.org for details
├── models             ← Trained and serialized models, model predictions, or model summaries
├── notebooks          ← Jupyter notebooks. Naming convention is a number (for ordering), the creator's initials, and a short `-` delimited description, e.g. `1.0-jqp-initial-data-exploration`.
├── references         ← Data dictionaries, manuals, and all other explanatory materials.
├── reports            ← Generated analysis as HTML, PDF, LaTeX, etc.
│   └── figures        ← Generated graphics and figures to be used in reporting
├── requirements.txt   ← The requirements file for reproducing the analysis environment, e.g. generated with `pip freeze > requirements.txt`
├── setup.py           ← makes project pip installable (pip install -e .) so src can be imported
├── src                ← Source code for use in this project.
│   ├── __init__.py  
│   ├── dataread      
│   │   └── __init__.py
│   │   └── example.py
│   │
│   ├── features       
│   │   └── __init__.py
│   │   └── example.py
│   │
│   ├── models     
│   │   └── __init__.py
│   │   └── example.py
│   │
│   ├── visualization    
│   │   └── __init__.py
│   │   └── example.py
├── App               
│   ├── android       
│   ├── ios           
│   ├── lib            
│   │   └── models
│   │   └── main.dart
│
└── .gitignore        



You might also like...
Comments
  • [Mac] deactivate 실패

    [Mac] deactivate 실패

    .env.leave 오류

    .../project/.env.leave:source:4: no such file or directory: .dev-env/bin/deactivate  
    virtual env is successfully deactivated!
    

    deactivate 실패하였으나 성공했다고 뜹니다. image

    opened by gbhwang 1
  • update: 사용자가 가상환경 버전을 선택할 수 있는 기능 추가 (pyenv-win)

    update: 사용자가 가상환경 버전을 선택할 수 있는 기능 추가 (pyenv-win)

    ⚠제꺼 M1 BigSur mac에 pyenv가 안깔려서 할 수가 없는데 노트북 빌려주실분 ㅠㅠ

    M1 BigSur에 안깔리는 이유


    1. 이제 bash 명령어가 다음과 같이 바뀝니다.

    • 기존: cookie . my_pjt
    • 변경: cookie . my_pjt 3.8.1

    2. 변경 사항 상세설명

    • 사용자가 마지막 파라미터로 원하는 파이썬 버전을 명시
    • .sh 코드 내부에서 pyenv-win을 이용해 다음의 과정을 수행함
      • pyenv install 3.8.1
      • pyenv global 3.8.1
      • pyenv rehash
      • pyenv local 3.8.1

    3. 사용자(client)는 pyenv-win을 미리 설치해두어야 함

    opened by LS-ELLO 0
  • Windows cookiecutter 실행 문제

    Windows cookiecutter 실행 문제

    Windows에서 실행 시 shell script 실행을 위해 Git bash를 이용해야 합니다.
    시스템 환경 변수에 shell 프로그램이 위치한 경로를 추가하면 powershell에서 sh 명령어를 통해 .sh 스크립트 파일을 실행시킬 수 있습니다.

    • Powershell을 통해 시스템환경변수에 sh.exe 경로 추가(Git을 default 경로에 설치했다면 아래 명령어를 그대로 사용하면 됩니다.)

      [System.Environment]::SetEnvironmentVariable('Path', 'C:\Program Files\Git\bin',[System.EnvironmentVariableTarget]::Machine)
      
      • Powershell에서 sh으로 .sh 파일을 실행시킬 수 있습니다.
      • Powershell에서 sh 없이 .sh파일을 바로 실행시킨다면 sh.exe 가 구동되며 스크립트를 실행하게 됩니다. 이를 이용하여 Powershell에 cookie Alias를 추가하여 사용합니다.
    • Posershell 프로필에 Alias 추가 (스크립트 경로로 수정 필요)

      Add-Content $PROFILE @("Set-Alias cookie ${PWD}\windows\cookie_cutter_project_dir.sh")
      
      • 이제 cookie 명령어를 통해 프로젝트를 생성할 수 있습니다. shell 프로그램이 새 창에서 구동되며 스크립트를 수행합니다.

        cookie [ROOT_PATH] [PROJECT_NAME]
        
    enhancement 
    opened by gbhwang 1
  • sys.path problem

    sys.path problem

    Path 문제와 관련하여 현재 방법을 찾고 있습니다.
    문제를 해결할 수 있을만한 힌트를 찾았는데 테스트 후 올리도록 하겠습니다.

    Problem

    1. .py를 terminal과 ipykernel에서 각각 동작시킬 때 os.getcwd()의 결과값이 다름
    2. src 내부 다른 폴더의 모듈을 서로 참조하는 경우 sys.path에 추가 필요

    Solution Hint

    1. .vscode/settings.json 추가

      {
        "jupyter.notebookFileRoot": "${workspaceFolder}"
      }
      
      • ipykernel 실행 시 root folder를 현재 workspaceFolder로 설정합니다.
      • 장점 : os.getcwd() 시 모두 동일한 경로(root folder)를 얻을 수 있습니다.
        (.py 터미널 실행, .py 셀 실행, .ipynb 실행)
      • 단점 :
        • 실행하려는 모든 파일에 sys.pathos.getcwd()를 이용한 path 추가 코드가 반드시 포함되어야 합니다.
        • 코드 상단에 sys.path 구문이 추가되므로 pylint 검사 시 문제가 됩니다.
    2. 현재 프로젝트를 editable 패키지로 설치

      pip install -e .
      
      • pip install -e옵션을 이용하면 현재 프로젝트를 편집 가능한 패키지로서 가상환경에 등록할 수 있습니다.

      • root folder에 setup.py 파일이 존재해야 합니다.

        from setuptools import setup
        
        
        setup(
            name="nocookie"
        )
        
      • 장점 : 별도의 path 설정이 필요 없습니다.

      • 단점 :

        • 코드 수정 시 커널을 재실행해야 합니다.

        • 코드 배포 시 requirements.txt에 현재 프로젝트를 명시해야 합니다.

          • pip freeze 이용 시 파일을 새롭게 쓰게 되므로 직접 파일에 아래 내용을 추가해야 합니다.

            -e .
            
          • poetry 이용 시 pip install 중 에러가 발생합니다. → 해결방법 탐색 중입니다.

    enhancement 
    opened by gbhwang 2
Owner
ello
ello