Installing DuckDB
Learning Focus
Use this lesson to get DuckDB installed and running on your system across multiple environments.
Installation Methods
Method 1: CLI Binary (Linux/macOS)
# Download latest release (Linux x86_64)
curl -fsSL https://github.com/duckdb/duckdb/releases/latest/download/duckdb_cli-linux-amd64.zip -o duckdb.zip
unzip duckdb.zip
chmod +x duckdb
sudo mv duckdb /usr/local/bin/
# Verify installation
duckdb --version
# macOS via Homebrew
brew install duckdb
# Verify
duckdb --version
Method 2: Python Package
pip install duckdb
# Verify in Python
python -c "import duckdb; print(duckdb.__version__)"
Method 3: Docker
docker run -it --rm \
-v $(pwd)/data:/data \
datacatering/duckdb:latest \
duckdb /data/mydb.db
Method 4: Node.js
npm install duckdb
# Verify
node -e "const db = require('duckdb'); console.log('DuckDB loaded');"
Post-Installation Setup
# Open an in-memory DuckDB session
duckdb
# Open or create a persistent database file
duckdb my_database.db
# Run a quick test
SELECT 42 AS answer, 'DuckDB is running' AS message;
Expected Output:
┌────────┬────────────────────┐
│ answer │ message │
│ int32 │ varchar │
├────────┼────────────────────┤
│ 42 │ DuckDB is running │
└────────┴────────────────────┘
Python Integration Setup
import duckdb
# In-memory database
con = duckdb.connect()
# Persistent database
con = duckdb.connect("my_database.db")
# Run a query
result = con.execute("SELECT 42 AS answer").fetchall()
print(result) # [(42,)]
Common Installation Issues
Issue 1: Command Not Found
duckdb: command not found
Solution: Ensure /usr/local/bin is in your $PATH:
export PATH="$PATH:/usr/local/bin"
echo 'export PATH="$PATH:/usr/local/bin"' >> ~/.bashrc
source ~/.bashrc
Issue 2: Python Version Mismatch
ERROR: Could not find a version that satisfies the requirement duckdb
Solution: DuckDB requires Python 3.7+. Check your version:
python --version
pip install --upgrade pip
pip install duckdb
Issue 3: Permission Denied on Binary
Permission denied: ./duckdb
Solution:
chmod +x ./duckdb
Best Practices
- Use persistent files (
duckdb mydb.db) for work you want to save - Use in-memory (
duckdbwith no args) for quick exploratory queries - Install the Python package if you plan to use DuckDB inside notebooks or scripts
Common Pitfalls
| Pitfall | Consequence | Prevention |
|---|---|---|
| Using in-memory without saving | Data lost when session closes | Use duckdb mydb.db for persistent work |
| Installing outdated DuckDB | Missing new features | Check duckdb --version and update regularly |
| Mixing Python 2 and 3 environments | Package not found | Use virtual environments (venv or conda) |
Quick Reference
# Install (Linux)
curl -fsSL https://github.com/duckdb/duckdb/releases/latest/download/duckdb_cli-linux-amd64.zip -o d.zip && unzip d.zip && sudo mv duckdb /usr/local/bin/
# Install (macOS)
brew install duckdb
# Install (Python)
pip install duckdb
# Start CLI
duckdb # in-memory
duckdb mydb.db # persistent
What's Next
- Next: DuckDB CLI Basics - Learn essential CLI commands and workflow.
- Module Overview - Return to this module index.