setting-up-streamlit-environment
Setting up Python environments for Streamlit apps. Use when creating a new project or managing dependencies. Covers uv for dependency management and running apps.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
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.
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:
uv venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
uv pip install streamlit
Run with:
streamlit run streamlit_app.py
Full project setup
For larger projects or when you need reproducible builds:
uv init my-streamlit-app
cd my-streamlit-app
uv add streamlit
This creates:
-
pyproject.tomlwith dependencies -
uv.lockfor reproducible builds -
.venv/virtual environment
Run with:
uv run streamlit run streamlit_app.py
With options
Avoid setting options unless you have a specific reason:
streamlit run streamlit_app.py --server.headless true # Only for automated/CI environments
Add dependencies
# 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 usinguv initfor 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
[project]
name = "my-streamlit-app"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
"streamlit>=1.40.0",
"plotly>=5.0.0",
"snowflake-connector-python>=3.0.0",
]
[tool.uv]
dev-dependencies = [
"pytest>=8.0.0",
]
References
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-02-04
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!