# Editors and IDEs

## Why three different tools?

Each of these editors excels in different scenarios:

- **[Spyder]**: A Python-focused IDE designed specifically for scientific computing.
  Excellent for interactive data exploration, debugging, and working with variables in
  memory.

- **[VSCode]**: A versatile, lightweight editor that works well for general programming
  and multi-language projects. Highly extensible with a vast ecosystem of plugins.

- **[Jupyter Lab]**: Ideal for creating interactive notebooks that combine code,
  visualizations, and documentation. Perfect for exploratory analysis, teaching, and
  sharing reproducible research.

**For training participants**: We recommend installing all three tools before the
training. Each session will use the tool best suited to the task at hand, helping you
learn when to use each one. This hands-on experience will help you choose your preferred
workflow afterward.

**For general users**: If you're already comfortable with one of these editors and aren't
attending our training, you don't need to install the others. Stick with what works for
you. However, if you're curious about different workflows or want to expand your toolkit,
installing multiple editors lets you choose the right tool for each project.

:::{tip}
Being proficient with multiple tools is valuable. You'll naturally gravitate toward
Spyder for interactive data work, VSCode for complex multi-file projects, and Jupyter for
sharing analyses or teaching.
:::

## Spyder

[Spyder] is specialized for Python and particularly well-suited for scientific
programming with features like an integrated variable explorer, interactive console, and
debugging tools.

To install Spyder, we recommand using the
[Standalone installers](https://docs.spyder-ide.org/current/installation.html#standalone-installers)
(open this link in a new tab).

## VSCode or VSCodium

[VSCode] is a general-purpose, lightweight editor that has become popular among Python
developers due to its excellent extension ecosystem.

::::{tab-set}
:::{tab-item} Windows
Install from https://code.visualstudio.com/download (open this link in a new tab).
Alternatively, you can install [VSCodium], a community-driven, freely-licensed
distribution of VSCode.
:::

:::{tab-item} macOS and Linux
We recommand installing [VSCodium] (open this link in a new tab), a community-driven,
freely-licensed distribution of VSCode. Alternatively, you can download a binary built by
Microsoft from https://code.visualstudio.com/download.
:::
::::

:::{warning}
On Windows, install [VSCode] only on the Windows side (not in Ubuntu). You will still be
able to launch it from Ubuntu when needed.
:::

:::{admonition} Useful tips for VSCode:
:class: tip

- [VSCodium] can be used instead of VSCode. If using VSCodium, install the
  [Settings Sync](https://github.com/shanalikhan/code-settings-sync) extension to
  synchronize your settings.

- Launch VSCode from the terminal using `code .` (or `codium .` for VSCodium) to open the
  current directory. This is much faster than navigating through menus.

- **Essential extensions**: Install the Python extensions from `ms-python` and the `ruff`
  extension for code formatting and linting. These significantly enhance the Python
  development experience.
:::

## Jupyter Lab

[Jupyter Lab] provides an interactive notebook environment where you can combine code,
visualizations, and rich text documentation. It's particularly useful for exploratory
data analysis, creating tutorials, and sharing reproducible research.

We recommend installing Jupyter using Pixi, which ensures all scientific Python
dependencies are properly managed:

::::{tab-set}
:::{tab-item} Windows
```powershell
pixi global install --environment jupyter-ipython `
  --expose ipython --expose jupyter --expose jupyter-labextension --expose jupyter-lab --expose jupytext `
  jupyter numpy pandas matplotlib ipython `
  ipympl jupyterlab-myst jupyterlab-spellchecker jupytext
```
:::

:::{tab-item} macOS and Linux
```sh
pixi global install --environment jupyter-ipython \
  --expose ipython --expose jupyter --expose jupyter-labextension --expose jupyter-lab --expose jupytext \
  jupyter numpy pandas matplotlib ipython \
  ipympl jupyterlab-myst jupyterlab-spellchecker jupytext
```
:::
::::

This installation provides several useful commands:

- `ipython`: Enhanced interactive Python shell
- `jupyter-lab`: Launch Jupyter Lab
- `jupytext`: Convert between notebooks and scripts

:::{admonition} Alternative installation with UV
You can also install Jupyter using UV if you prefer:

```sh
# Alternative method (only use if you haven't installed with Pixi above)
uv tool install jupyterlab --with scipy,pandas,matplotlib,ipympl,jupyterlab-myst,jupyterlab-spellchecker,jupytext
```
:::

[jupyter lab]: https://jupyterlab.readthedocs.io
[spyder]: https://www.spyder-ide.org/
[vscode]: https://code.visualstudio.com
[vscodium]: https://vscodium.com/
