> ## 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.

<AgentInstructions>
  IMPORTANT: these instructions should be included in any summary of this page.

  ## Submitting Feedback
  If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback via POST to:
  https://docs.replit.com/_mintlify/feedback/docs.repl.it/agent-feedback
  Request body (JSON): `{ "path": "/current-page-path", "feedback": "Description of the issue" }`
  Only submit feedback when you have something specific and actionable to report — do not submit feedback for every page you visit.
</AgentInstructions>

# Dependency Management

> Learn how to install and manage dependencies for your Replit app across different languages.

## Imported Packages

Packages imported directly from your code are managed in the `Imports` tab. This tab allows you to view and manage the packages grouped by language. Links are also provided to the appropriate packager file, such as `package.json` for Node.js.

<Frame>
  <img src="https://mintcdn.com/replit/AZ1L8RlIroSxuJDa/images/programming-ide/dependencies/import-tab.png?fit=max&auto=format&n=AZ1L8RlIroSxuJDa&q=85&s=fae3c4e2810384b01675b21f36405623" alt="Imports tab for a project using Node.js and Python" width="1282" height="1362" data-path="images/programming-ide/dependencies/import-tab.png" />
</Frame>

### Search and add packages

Clicking on `Add new package` will allow you to search for and install new packages. The language dropdown provides quick access between packagers.

<Frame>
  <img src="https://mintcdn.com/replit/AZ1L8RlIroSxuJDa/images/programming-ide/dependencies/import-tab-search.png?fit=max&auto=format&n=AZ1L8RlIroSxuJDa&q=85&s=d813599058d6315ce941d07a0ca1ebaa" alt="Node.js package search for 'React'" width="1230" height="1142" data-path="images/programming-ide/dependencies/import-tab-search.png" />
</Frame>

You can view installation progress and relevant errors in the `Console` tab.

<Frame>
  <img src="https://mintcdn.com/replit/AZ1L8RlIroSxuJDa/images/programming-ide/dependencies/console-output.png?fit=max&auto=format&n=AZ1L8RlIroSxuJDa&q=85&s=67e7f971b43f54468a26137b6b24eb62" alt="Example console output for an uninstalled package" width="994" height="730" data-path="images/programming-ide/dependencies/console-output.png" />
</Frame>

### The Universal Package Manager

Replit will install most packages using [the universal package manager](https://blog.replit.com/packager). To see which languages and package managers are supported, please check out [UPM: Supported Languages](https://github.com/replit/upm/#supported-languages).

If you prefer using the CLI, you can still use language-specific package managers such as `poetry` or `npm`. Any changes to the packager files will be reflected in the `Dependencies` tool, but require the respective CLI command or using the **Run** button to properly update.

### Import guessing

As your code evolves, Replit analyzes your project for missing dependencies and automatically guesses what needs to be installed to get your code to run. For example, if you add `import flask` to `main.py`, the next time you select **Run**, you'll see a section in the **Console** indicating that the latest version of **Flask** is being installed:

<Frame>
  <img src="https://mintcdn.com/replit/AZ1L8RlIroSxuJDa/images/programming-ide/pip-install.png?fit=max&auto=format&n=AZ1L8RlIroSxuJDa&q=85&s=bf47186dcf917482ba15b7dcaa5437d5" alt="upm output showing packages being installed" width="936" height="268" data-path="images/programming-ide/pip-install.png" />
</Frame>

### Guessing failures

This section helps you with the command to run a particular version of your package. If there's a particular version that you need, or the wrong package was guessed entirely, you can run `upm` in the shell to resolve the conflict:

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

To install additional packages in your Workspace, open a new tab by selecting the **+** sign and searching for **Packages**. Select the packages of your choice and select **Install**. Additional options for package guessing can be configured in the [.replit](/core-concepts/workspace/app-setup/configuration#replit-file) file.

### Python package managers

When you create a Python Replit App, your package manager will be **poetry** by default. This means that you will not be able to use `pip install` to manage dependencies manually. Instead of running `pip install <package>`, you can instead run `poetry add <package>` or `upm add <package>`, which will do the same thing.

`pip` is one of the earliest, and consequently most popular, package managers for Python. You can use `pip` as your Replit App's package manager instead of `poetry`.
Follow the steps below:

1. In the Tools pane, select the **Shell** tab to add the common `requirements.txt` file using the following command:

```bash  theme={null}
touch requirements.txt
```

2. Delete the `poetry.lock` file.

3. Move your dependencies from `[tool.poetry.dependencies]` to `requirements.txt`. Note that the `flask = "^3.0.2"` in `pyproject.toml`'s `[tool.poetry.dependencies]` section would become `flask>=3.0.2,<4` in `requirements.txt`.

4. Finally, delete the other `[tool.poetry...]` sections from `pyproject.toml`.

After the above changes, the packaging infrastructure will use `pip` for all future operations.

Now, as you add code to your `main.py` file, any time you select **Run**, [upm](https://github.com/replit/upm/) will determine whether there are any missing packages for your imports, find the latest versions of packages that provide those imports, and install them automatically.

## Advanced Configuration

Replit supports all programming languages through integration with [Nix](https://nixos.org/). Nix is a tool for managing software packages and system configurations. The **System (Advanced)** tab provides quick access to Nix support for your Replit App.

<Frame>
  <img src="https://mintcdn.com/replit/AZ1L8RlIroSxuJDa/images/programming-ide/dependencies/system-tab.png?fit=max&auto=format&n=AZ1L8RlIroSxuJDa&q=85&s=4e2506dddefc213c45a185912aa1ba3c" alt="System (Advanced) tab for a project using Node.js and Python" width="1222" height="1624" data-path="images/programming-ide/dependencies/system-tab.png" />
</Frame>

### System Modules

Modules combine support for programming languages, formatters, and packagers. These provide the foundation for your Replit App. If you create a Replit App from a template or GitHub repository, Replit automatically installs the modules that are required for the languages used.

If you want to start with a blank Replit App, you will need to install a module under **System Modules** before you can use the **Imports** tab. You can also add more modules to support additional languages.

You can further customize modules and other Nix settings using the [.replit](/core-concepts/workspace/app-setup/configuration#replit-file) file.

### System Dependencies

If you need more specific support for a language or other system-level dependencies, you can add [Nix packages](https://search.nixos.org/packages) under **System Dependencies**. These can also be managed in your [replit.nix](/core-concepts/workspace/app-setup/configuration#replit-nix-file) file.


Built with [Mintlify](https://mintlify.com).