Skip to content
Back to skills

Setting Up Streamlit Environment

ASecurity

Use when creating or fixing the Python environment for a Streamlit app — choosing between pip, poetry, conda, and uv, pinning to the latest Streamlit, and setting up an isolated environment before the app runs.

  • 10 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 10, 2026
ai-agentspythongobashgitapidocumentation

Works with

  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 10, 2026

npx -y skills add mouadja02/skills --skill setting-up-streamlit-environment --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Setting Up Streamlit Environment?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Setting Up Streamlit Environment
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mouadja02-setting-up-streamlit-environment/badge)](https://www.skillsdirectory.com/skills/mouadja02-setting-up-streamlit-environment)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: setting-up-streamlit-environment
description: "Use when creating or fixing the Python environment for a Streamlit app — choosing between pip, poetry, conda, and uv, pinning to the latest Streamlit, and setting up an isolated environment before the app runs."
license: Apache-2.0
source: "https://github.com/streamlit/agent-skills"
attribution: "streamlit/agent-skills by Streamlit"
---

> **Attribution:** Sourced from [streamlit/agent-skills](https://github.com/streamlit/agent-skills) by [Streamlit](https://streamlit.io).

# Streamlit environment

Use whatever dependency management the project already has (pip, poetry, conda, etc.). If starting fresh and uv is available, it's a good default—fast, reliable, and creates isolated environments automatically.

If uv is not installed, ask the user before installing it.

## CRITICAL: Always Use Latest Streamlit

**Always specify `streamlit>=1.53.0`** (or latest) in dependencies. Many Streamlit features and patterns in these skills require recent versions. Older streamlit versions will cause errors with:
- Material icons (`:material/icon_name:`)
- `st.pills()`, `st.segmented_control()`
- Modern caching decorators
- Navigation APIs

When setting up a new project or fixing an existing one, **always check and update the streamlit version**.

## Using uv

If uv is available, here's how to set up a Streamlit project.

### Quick start (venv only)

For simple apps, just create a virtual environment:

```bash
uv venv
source .venv/bin/activate  # or .venv\Scripts\activate on Windows
uv pip install streamlit
```

Run with:

```bash
streamlit run streamlit_app.py
```

## Full project setup

For larger projects or when you need reproducible builds:

```bash
uv init my-streamlit-app
cd my-streamlit-app
uv add streamlit
```

This creates:
- `pyproject.toml` with dependencies
- `uv.lock` for reproducible builds
- `.venv/` virtual environment

Run with:

```bash
uv run streamlit run streamlit_app.py
```

## With options

Avoid setting options unless you have a specific reason:

```bash
streamlit run streamlit_app.py --server.headless true  # Only for automated/CI environments
```

## Add dependencies

```bash
# With venv approach
uv pip install plotly snowflake-connector-python

# With full project (uv init)
uv add plotly snowflake-connector-python
```

## Project structure

Keep it simple. For most apps:

```
my-streamlit-app/
├── .venv/
└── streamlit_app.py
```

Only add more when needed:
- `app_pages/` → Only for multi-page apps
- `.streamlit/config.toml` → Only if customizing theme or settings
- `.streamlit/secrets.toml` → Only if using secrets (add to `.gitignore`)
- `pyproject.toml` → Only if using `uv init` for reproducible builds

## Convention

Name your main file `streamlit_app.py` for consistency. This is what Streamlit expects by default.

**What goes in the main module:**
- When using navigation: it's a router that defines pages and runs them
- When there's no navigation: it's the home page with your main content

## pyproject.toml Example

```toml
[project]
name = "my-streamlit-app"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
    "streamlit>=1.53.0",
    "plotly>=5.0.0",
    "snowflake-connector-python>=3.0.0",
]

[tool.uv]
dev-dependencies = [
    "pytest>=8.0.0",
]
```

## References

- [uv documentation](https://docs.astral.sh/uv/)
- [Streamlit installation](https://docs.streamlit.io/get-started/installation)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…