Juno is a native Python development environment in a first-class citizen app for iPad and iPhone. Juno lets you work with both plain Python scripts and 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 scripts and 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.
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 in notebooks?
Can I install another Jupyter kernel?
I can’t open documents and/or grant access to directories in my cloud storage
Can I change the font size?
Is there a git integration?
Does notebook editor support nbextensions?
Does Juno support conda environments?
I have a problem with something else
Juno ships with the Python 3.10.4 interpreter on board. We know many of you are interested in R and Julia — 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.
Juno integrates with the file system using Apple’s Files app , and should be able to open scripts and notebooks anywhere on your device. That said, some cloud storage providers don’t integrate with Files in full (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 open and edit documents and grant access to directories (e.g. iCloud); for others, you are allowed to edit documents, but not request access to entire directories (e.g. Dropbox, OneDrive); while some services won’t even let you open any 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.
You can adjust text size in settings for each editor individually — i.e. Python source editor, notebook editor and the built-in plain 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. It lets you clone a repo to your device, add then either open files from that repo in Juno, or even add the entire repo directory as a quick access location in Juno’s file browser. Juno will edit those files in place, and any changes you make will be reflected in the git client app, where you can commit and push them.
More on editing files in place and working with the file system on iOS: 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: