drivendataorg / nbautoexport

Automatically export Jupyter notebooks to various file formats (.py, .html, and more) on save.
https://nbautoexport.drivendata.org/
MIT License
72 stars 9 forks source link

Using nbautoexport in VSCode #128

Open gacek91 opened 1 month ago

gacek91 commented 1 month ago

Description

I’m trying to run nbautoexport in Jupyter Notebooks opened in VSCode. Conversion from .ipynb to .py works without any problems in Jupyter Notebook/Jupyter Lab. However, whenever I connect VSCode to an active Jupyter session, neither automatic nor manual saves force the library to do the export to a .py file.

It seems probable that this is not an issue with nbautoexport itself, but rather with how VSCode saves notebook files. Nevertheless, I would be very grateful for any suggestions on how to tackle this issue.

What I Did

  1. Installed nbautoexport
  2. Tested the behaviour in Jupyter Notebook/Jupyter Lab:
    • Conversion works without any problems.
  3. Tested the behavior in VSCode:
    • Using the same session where nbautoexport worked with Jupyter Notebook/Lab (doesn’t work)
    • Using a new session created in VSCode (doesn’t work)

I also tried adding % autosave 120 to force save the notebooks every 2 minutes, and it also didn’t work.

Observations:

Additional Information:

jayqi commented 1 month ago

I'm not quite certain what you mean by "session" when you say "using the same session" as Jupyter Notebook/Lab. Do you mean "kernel"?

In any case, nbautoexport not working with VS Code is a general limitation we have. We hook into APIs related to Jupyter Notebook/Lab's functionality as an editor application (i.e., disk I/O) to trigger the export. VS Code is itself an editor and handles that stuff independently.

Supporting VS Code is going to involve building VS-Code-specific support, probably through a VS Code extension. It's something we're certainly interested in, as myself and other folks on our team also often use VS Code for notebooks. (Currently, my work-around is to just run nbautoexport export from the command-line manually periodically.) I had played around with making a VS Code extension for nbautoexport a year or two ago, but I wasn't familiar with developing extensions and didn't make much progress on getting something to work.