Juno is a Python development environment for data analysis and scientific research, which works with Jupyter notebooks — a commonly used document format, which lets you combine source code, code output, text, formulas and rich media. Juno ships with its own Python interpreter, which executes code in your notebooks locally on your device, bringing a lot of industry standard desktop tools to iOS and iPadOS. Juno strives to provide a seamless coding experience on the iOS platform: it integrates with Files , supports Dark Mode, Dynamic Type, iPadOS document editing features, split screen multitasking and multiple windows, and works beautifully with Apple’s Magic Keyboard and trackpad.
Learn more about Juno features here: Working with notebooks in Juno.
What languages does Juno support?
What packages does Juno have?
Can I upgrade a package?
I can’t install a package
Can I import .py files as modules?
Can I install another kernel?
Juno doesn’t open Jupyter notebook documents
I can’t open notebooks and/or grant access to directories in my cloud storage
My hardware keyboard doesn’t have an Esc key
Can I change the font size?
Is there a git integration?
Does Juno support nbextensions?
Does Juno support conda environments?
I have a problem with something else
Juno ships with Python 3.10.4 kernel on board. We know many of you are interested in R and Julia kernels — there are no concrete plans at the moment, but we would like to look into them at some point, too.
Juno currently ships with over 100 Python packages pre-installed:
You can find the full list of installed packages in Juno’s package manager — which also lets you install any additional packages, as long as they are written in pure Python. You can find more information here: Package management in Juno.
You can upgrade any package you have installed yourself, and many of the pre-installed packages, too. However, please mind that some of the pre-installed packages are pinned to specific versions — either because Juno relies on them internally, or because they have native extensions, and therefore can not be upgraded due to platform restrictions. You can find more information here: Package management in Juno.
Most likely this means that this package has native extensions, which means we will need to port it to iOS and embed into the app binary, similar to what we did with NumPy, SciPy, Pandas and other non-pure Python packages. Please, submit a package request in our issue tracker here (if there isn’t one already).
If you are confident that this a pure Python package, but Juno’s package manager doesn’t let you install it, please raise an issue in our issue tracker, and we will look into it. Meanwhile, you should be able to install this package manually, by placing its sources to
/site-packages directory. If you managed to install it, but Juno doesn’t let you import it in code, make sure it doesn’t have a dependency that doesn’t match the above criteria.
You can find more information on what can be installed and how to do this here: Package management in Juno.
Yes, you should be able to do this the same way you do on desktop — the file should be either in
/site-packages folder, or in your notebook’s directory. In case of the latter, you also need to make sure Juno has access to notebook’s directory (more on this here: File system permissions and paths in iOS), and that the .py file you are trying to import is actually downloaded to device, if it happens to be in a cloud storage, e.g. iCloud.
Unfortunately, no. Installing a kernel certainly lies in the “installing a package with native extensions” territory, so whenever Juno adds support for additional kernels, they will likely come pre-installed in the app.
If you can’t open
Welcome to Juno.ipynb file in Juno’s on-device storage, or if .ipynb files don’t display a Jupyter logo on their thumbnails, most likely something is broken with file association, i.e. with how Juno registers with the OS as a handler of .ipynb files. There are apps on the App Store that abuse this functionality, and common symptoms are described in this issue, for example: https://github.com/rationalmatter/Juno-Issue-Tracker/issues/55.
Juno integrates with the file system using Apple’s Files app , and should be able to open notebooks anywhere on your device. That said, some cloud storage providers don’t integrate with Files in full (for whatever reason, perhaps due to additional complexity, or as a security measure). So, file system functionality that will work with cloud storage services goes only as far as their developers chose to integrate with the Apple’s APIs. For some, everything will be working 100% — you can edit notebooks and grant access to directories (e.g. iCloud); for others, you are allowed to edit notebooks, but not request access to entire directories (e.g. Dropbox, OneDrive); while some services won’t even let you open .ipynb files. Hopefully, this will get resolved by cloud storage services finalising their Files integration eventually. That said, we are looking into workarounds, where we could potentially integrate with some of them bypassing Files app.
You can find more information on working with the iOS file system here: File system permissions and paths in iOS.
Notebook editor in Juno and Juno Connect responds to default Jupyter shortcuts on your hardware keyboard, and also allows configuring an additional binding to
Option or a few other key options, which will duplicate
Esc key and will let you enter command mode, for instance.
You can adjust text size in settings for both notebook editor and built-in text editor. Juno also support Dynamic Type, which means it will adjust the UI according to system Text Size setting (Settings > Display & Brightness > Text Size), unless you override it in the app settings.
Juno integrates with Files and iOS file system APIs, so you should be able to work with git using any third-party git client, like Working Copy. You would clone a repo to your device, run notebooks in Juno, and then commit your changes in the git client. Thanks to Juno’s Files integration, you can edit those notebooks in place, with full access to the cloned repo directory (more on this here: File system permissions and paths in iOS).
Juno doesn’t support arbitrary extensions, although it does come with
ipywidgets pre-installed, for example. Not all nbextensions will work with Juno’s notebook editor, but feel free to create a feature request in our issue tracker for any particular extension you are missing: Juno Issue Tracker.
There is no multiple environments support at the moment, no.
If you can’t find an answer to your question here: