> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 의존성 관리

> 다양한 언어에서 Replit App의 패키지와 의존성을 설치하고 관리하는 방법을 알아보세요.

Replit은 Replit App의 패키지를 설치하고 관리하는 여러 가지 방법을 제공합니다. [Shell](/references/workspace-tools/shell)을 사용하거나 [Agent](/references/agent/overview/)에게 처리를 요청하거나, Replit App 실행 시 누락된 의존성을 자동으로 감지하고 설치할 수 있습니다.

## Shell을 사용한 패키지 설치

Project Editor에서 **Shell** 도구를 열고 사용 중인 언어의 패키지 관리자에 맞는 명령을 실행하세요:

<CodeGroup>
  ```bash Node.js (npm) theme={null}
  npm install <package-name>
  ```

  ```bash Node.js (pnpm) theme={null}
  pnpm add <package-name>
  ```

  ```bash Python (poetry) theme={null}
  poetry add <package-name>
  ```

  ```bash Python (pip) theme={null}
  pip install <package-name>
  ```

  ```bash Ruby theme={null}
  bundle add <gem-name>
  ```
</CodeGroup>

Replit의 [범용 패키지 관리자(UPM)](https://github.com/replit/upm/)를 사용하여 지원되는 언어 전반에 걸쳐 패키지를 설치할 수도 있습니다:

```bash theme={null}
upm add <package-name>
```

특정 버전을 설치하려면:

```bash theme={null}
upm add 'flask==2.3.3'
```

지원되는 모든 언어 및 패키지 관리자는 [UPM: 지원 언어](https://github.com/replit/upm/#supported-languages)를 참조하세요.

## Agent를 사용한 패키지 설치

채팅에서 [Agent](/references/agent/overview/)에게 패키지를 설치해 달라고 직접 요청할 수 있습니다. 예를 들어:

* "axios 패키지를 설치해 주세요"
* "Flask와 SQLAlchemy를 프로젝트에 추가해 주세요"
* "TailwindCSS를 설정해 주세요"

Agent는 프로젝트에 적합한 패키지 관리자를 사용하여 패키지를 설치하고 관련 구성 파일을 업데이트합니다.

## 자동 가져오기 감지

Replit은 **Run**을 선택할 때마다 코드에서 누락된 의존성을 자동으로 분석합니다. 코드가 아직 설치되지 않은 패키지를 가져오면 Replit이 이를 감지하고 최신 버전을 자동으로 설치합니다.

예를 들어, `main.py`에 `import flask`를 추가하면 다음번에 **Run**을 선택할 때 **Console**에 **Flask**가 설치 중이라는 메시지가 표시됩니다.

<Note>
  [.replit](/references/project-setup/configuration#replit-file) 파일의 `packager.features.guessImports` 설정을 통해 자동 가져오기 감지를 구성할 수 있습니다.
</Note>

### 자동 감지 재정의

잘못된 패키지가 감지되었거나 특정 버전이 필요한 경우, Shell에서 올바른 설치 명령을 실행하세요. 예를 들어:

```bash theme={null}
upm add 'flask==2.3.3'
```

[.replit](/references/project-setup/configuration#replit-file) 파일에서 특정 패키지 또는 경로를 자동 감지에서 제외할 수도 있습니다:

## Python 패키지 관리자

Python Replit App을 만들면 기본 패키지 관리자는 **poetry**입니다. 따라서 `pip install`로 의존성을 관리하지 않습니다. 대신 Shell에서 `poetry add <패키지>` 또는 `upm add <패키지>`를 사용하세요.

### poetry에서 pip으로 전환

`pip` 사용을 선호한다면 다음 단계를 따르세요:

<Steps>
  <Step>
    Shell을 열고 다음을 실행하세요:

    패키징 인프라가 pip으로 전환되도록 잠금 파일을 제거합니다:

    ```bash theme={null}
    rm poetry.lock
    ```
  </Step>

  <Step title="의존성 이전">
    `pyproject.toml`의 `[tool.poetry.dependencies]` 섹션에서 `requirements.txt`로 의존성을 옮기세요. 예를 들어, `flask = "^3.0.2"`는 `flask>=3.0.2,<4`가 됩니다.
  </Step>

  <Step title="pyproject.toml 정리">
    `pyproject.toml`에서 `[tool.poetry...]` 섹션을 삭제합니다.
  </Step>
</Steps>

이러한 변경 후 패키징 인프라는 모든 향후 작업에 `pip`을 사용하며, 자동 가져오기 감지도 예상대로 계속 작동합니다.

## Nix를 사용한 시스템 의존성

Replit은 [Nix](https://nixos.org/)와의 통합을 통해 모든 프로그래밍 언어를 지원합니다. 표준 언어 패키지 이상의 시스템 수준 의존성이 필요한 경우 [replit.nix](/references/project-setup/configuration#replit-nix-file) 파일에 추가할 수 있습니다.

### Nix 패키지

`replit.nix`를 직접 편집하여 시스템 수준 의존성을 추가하세요. [search.nixos.org](https://search.nixos.org/packages)에서 사용 가능한 패키지를 검색할 수 있습니다.

### 모듈

모듈은 프로그래밍 언어, 포매터, 패키저에 대한 지원을 결합합니다. Replit App의 기반을 제공합니다. 템플릿이나 GitHub 저장소에서 Replit App을 만들면 Replit이 필요한 모듈을 자동으로 설치합니다.

[.replit](/references/project-setup/configuration#replit-file) 파일을 사용하여 모듈 및 기타 Nix 설정을 맞춤화할 수 있습니다.

## 패키저 구성

[.replit](/references/project-setup/configuration#replit-file) 파일에서 패키지 관리 동작을 세밀하게 조정할 수 있습니다:

| 설정                                    | 설명                          | 기본값     |
| ------------------------------------- | --------------------------- | ------- |
| `packager.language`                   | 패키지 작업에 사용되는 언어             | 자동 감지   |
| `packager.features.guessImports`      | Run 시 누락된 패키지를 자동으로 감지하고 설치 | `true`  |
| `packager.features.packageSearch`     | 패키지 검색 지원 활성화               | `true`  |
| `packager.features.enabledForHosting` | 호스팅 시 패키지 설치 필요 여부          | `false` |
| `packager.afterInstall`               | 패키지 설치 후 실행할 명령             | —       |
| `packager.ignoredPaths`               | 가져오기 감지 중 무시할 경로            | `[]`    |
| `packager.ignoredPackages`            | 자동 감지에서 제외할 패키지             | `[]`    |
