JupyMD

by Deniz Terzioglu
5
4
3
2
1
Score: 54/100

Description

The JupyMD plugin bridges the gap between Markdown notes and Jupyter Notebooks by enabling seamless creation and synchronization using Jupytext. It allows you to convert your current note into a Jupyter Notebook and keeps the Markdown and notebook versions in sync on save. You can also open these notebooks directly in VS Code or Jupyter Lab, provided the corresponding files exist. This setup is ideal for users who blend note-taking with code-based exploration, especially in data science, research, or computational notebooks. With minimal setup, it brings the interactivity of Jupyter into your note-based workflow.

Reviews

No reviews yet.

Stats

255
stars
9,127
downloads
10
forks
375
days
14
days
23
days
17
total PRs
0
open PRs
3
closed PRs
14
merged PRs
31
total issues
3
open issues
28
closed issues
0
commits

Latest Version

24 days ago

Changelog

JupyMD 1.7.0

This release introduces a new interpreter selector window, making it much easier to setup and manage the Python environment JupyMD uses.

As part of that change, the old Quick Setup button has been deprecated in favor of the new built-in venv creation flow inside the interpreter selector. You can now create virtual environments directly from the new UI.

There are also a couple of supporting improvements around this new flow. pyenv environments are included in interpreter discovery, and the status bar shows the interpreter or environment currently in use.

Many thanks to our new contributor @aribaza for her work on this release!

Full Changelog

Features

  • add pyenv support to kernel discovery (e1106b2)
  • add source badges to kernel selector (4696f8d)
  • clean venv creation option by removing second setup label (4117036)
  • create venv option added in context manager (62ac18f)
  • create-venv: add modal for creating virtual environments and integrate with kernel selector (336757f)
  • display interpreter name instead of path in status bar (3f1722a)
  • improve kernel status bar interactions (35449b4)
  • kernel-selector: add command to select Python kernel (3e54609)
  • kernel-selector: add styling for kernel status and suggestions in the UI (95f63bb)
  • kernel-selector: implement kernel selection modal and discovery utils (20e3cde)
  • kernel-selector: implement status bar for current Python interpreter and kernel selection (feaa17e)
  • kernel-selector: modify settings page to access new kernel selector functionality (cca8930)
  • reduce stroke width of clear icon (ff42a1d)
  • show interpreter versions in settings (32cb61d)
  • use fuzzy interpreter picker for venv creation (c43f04d)

Bug Fixes

  • kernel-selector: improve text handling in settings (19a91ae)
  • kernel-selector: improve text handling in settings (5daedad)
  • restart kernels silently after interpreter changes (d98df15)
  • settings interpreter display did not update when changing interpreter (1fbd342)

README file from

Github

jupymd-logo

JupyMD for Obsidian

GitHub Downloads (all assets, all releases) GitHub Release

Enables Jupyter notebook functionality in Obsidian. Make markdown files behave like .ipynb notebooks, with live code execution, rich output rendering, and bidirectional syncing between .md and .ipynb files.

Integrate your programming notes into Obsidian

With JupyMD you can:

  • Run Python code
  • Create plots with matplotlib
  • Conduct data analysis with pandas dataframes
  • Build machine learning models with sklearn and pytorch
  • And much of what you would typically use a Jupyter notebook for

... all in your Obsidian vault!

Use-cases:

Machine learning workflow

ml-workflow

Visualising fractals with matplotlib

mandelbrot-set

Features

  • Notebook Conversion
    • Convert existing notes in Obsidian to .ipynb files via Jupytext
    • Convert existing Jupyter notebooks (.ipynb) to Markdown notes (.md) via Jupytext
  • Bidirectional Updates – Changes in Obsidian or Jupyter automatically sync between .md and .ipynb files
  • Execute Code – Run code blocks in Obsidian with output captured below each block, regardless of viewing mode
  • Persistent Execution Environment – Variables and imports defined in one code block are remembered by the following code blocks
  • True Jupyter Sync – Executed code blocks automatically update output metadata in linked .ipynb file
  • Persistent Output Rendering – Executed code outputs stay visible after restart and sync to .ipynb file
  • Rich Output – Support for matplotlib plots and pandas dataframe outputs

Prerequisites

Jupytext and Matplotlib can be installed on configured interpreters within the plugin settings.

Getting started

Download the plugin through the Obsidian community plugin browser and enable it.

Interpreter configuration

It is highly recommended to use a virtual environment for an interpreter. It is easy to set up a virtual environment through the interpreter selector within the plugin settings.

JupyMD natively supports pyenv environments and custom interpreters.

To install libraries to a specified interpreter, use the following command line prompt:

<interpreter> -m pip install <package>

You can copy the path to your current interpreter by shift + clicking on the interpreter name on the status bar.

To convert a note to a Jupyter notebook

Your note will be transformed into a Jupyter notebook when you run a cell through the custom code blocks. This will create an .ipynb file with the same file name as the current note on the file directory, and sync its contents automatically to the .ipynb file. You may choose to ignore the created .ipynb file completely, as its functionality will be mirrored in Obsidian.

To manually convert a note, you may run the following command:

JupyMD: Create Jupyter notebook from note

To convert a Jupyter notebook to a note

Move your Jupyter notebook to your vault. Executing the following command will list out all .ipynb files within your vault which you can select to convert into a note:

JupyMD: Create note from Jupyter notebook

This will create a Markdown note (.md) with the same file name as the notebook in the same directory where the Jupyter notebook is.

Security & Privacy Notice

JupyMD may access directories outside your Obsidian vault to detect available Python interpreters.

This includes:

  • System-wide Python installations (e.g. /usr/bin/python, python3)
  • Virtual environments located inside your vault (e.g. .venv)
  • Optional pyenv-managed Python versions (e.g. ~/.pyenv/versions)

This access is required to automatically discover and list available Python environments and allow users to select an interpreter for code execution. JupyMD does not transmit any data over the network or modify files outside your vault.

Contributing

Please read the contribution guidelines if you want to contribute to JupyMD.

This project was originally built to solve a personal problem, and it's still in an early stage. Feedback, feature requests, bug reports, and pull requests are all welcome and appreciated!

JupyMD is an independent project and not affiliated with Project Jupyter, Jupytext, or Obsidian.

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.