# Jupyter Notebook에 현재 프로젝트 가상환경 적용하기

이 문서는 현재 프로젝트 폴더에서 `.venv` 가상환경을 만들고, `requirements.txt`의 패키지를 설치한 뒤, Jupyter Notebook에서 해당 가상환경을 커널로 사용하는 방법을 설명합니다.

## 1. 프로젝트 폴더로 이동

```bash
cd /home/kafa46/classes/ml2/ensemble
```

## 2. `.venv` 가상환경 생성

```bash
python3 -m venv .venv
```

생성이 끝나면 프로젝트 폴더 안에 `.venv` 디렉터리가 만들어집니다.

## 3. 가상환경 활성화

```bash
source .venv/bin/activate
```

정상적으로 활성화되면 터미널 프롬프트 앞에 `(.venv)`가 표시됩니다.

## 4. `pip` 업데이트

가상환경 안에서 `pip`를 최신 상태로 올립니다.

```bash
python -m pip install --upgrade pip
```

## 5. `requirements.txt`로 패키지 설치

프로젝트 루트에 `requirements.txt`가 있다면 아래 명령으로 필요한 패키지를 설치합니다.

```bash
pip install -r requirements.txt
```

## 6. Jupyter 커널 등록에 필요한 패키지 설치

Jupyter에서 현재 가상환경을 선택하려면 `ipykernel`이 필요합니다.

```bash
pip install ipykernel
```

Jupyter Notebook 자체가 설치되어 있지 않다면 함께 설치합니다.

```bash
pip install jupyter
```

## 7. 현재 가상환경을 Jupyter 커널로 등록

```bash
python -m ipykernel install --user --name ml2-venv --display-name "Python (ml2-venv)"
```

각 옵션의 의미는 다음과 같습니다.

- `--name`: Jupyter 내부에서 커널을 구분하는 이름입니다.
- `--display-name`: Notebook 화면에서 보이는 이름입니다.

`ensemble-venv` 대신 프로젝트에 맞는 다른 이름을 써도 됩니다.

## 8. Jupyter Notebook 실행

```bash
jupyter notebook
```

또는 JupyterLab을 쓰고 있다면:

```bash
jupyter lab
```

## 9. Notebook에서 커널 변경

Notebook을 연 뒤, 등록한 커널을 선택합니다.

- Jupyter Notebook: `Kernel > Change kernel`
- VS Code Notebook: 우측 상단 `Kernel` 선택

이후 `Python (ml2-venv)`를 선택하면 됩니다.

## 10. 현재 Notebook이 올바른 가상환경을 쓰는지 확인

Notebook 셀에서 아래 코드를 실행합니다.

```python
import sys
print(sys.executable)
```

출력 경로에 `.venv/bin/python`이 포함되어 있으면 올바르게 연결된 것입니다.

## 자주 쓰는 전체 명령 모음

처음부터 한 번에 진행하려면 아래 순서대로 실행하면 됩니다.

```bash
cd /home/kafa46/classes/ml2/ensemble
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install ipykernel jupyter
python -m ipykernel install --user --name ensemble-venv --display-name "Python (ensemble-venv)"
jupyter notebook
```

## 문제 해결

### `ModuleNotFoundError: No module named 'scipy'`가 나는 경우

현재 Notebook이 `.venv` 커널이 아닌 다른 Python 환경을 사용하고 있을 가능성이 큽니다.

1. Notebook에서 현재 Python 경로 확인:

```python
import sys
print(sys.executable)
```

2. 커널이 잘못되어 있다면 `Python (ml2-venv)`로 변경
3. 그래도 없으면 가상환경에서 다시 설치

```bash
source .venv/bin/activate
pip install scipy
```

### 등록한 커널을 다시 만들고 싶은 경우

같은 이름으로 다시 등록하면 갱신됩니다.

```bash
source .venv/bin/activate
python -m ipykernel install --user --name ml2-venv --display-name "Python (ml2-venv)"
```