Troubleshooting Juno

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 for the first time. Juno strives to provide a seamless coding experience on the iOS platform: it integrates with Files Files app icon, supports Dark Mode, Dynamic Type and split screen multitasking, and works beautifully with Apple’s Magic Keyboard and trackpad.

What languages does Juno support?

Juno only ships with Python 3.6.6 kernel at the moment (which we plan to upgrade to Python 3.8 soon). We know many of you are also interested in R and Julia kernels — which we certainly would like to look into at some point, too.

What packages does Juno have?

Juno currently ships with over 50 Python packages pre-installed. The key packages with native extensions are:

  • NumPy 1.16.4
  • Matplotlib 3.1.1
  • Pandas 1.0.3
  • SciPy 1.4.0
  • Scikit-learn 0.23.1
  • LXML 4.6.2 (currently in beta)
  • Pillow 8.1.2 (currently in beta)

You can also install any additional packages, as long as they are pure Python ones: Install Python packages in Juno

Can I upgrade a package?

You can upgrade any package you have installed yourself, but anything that comes pre-installed is not upgradeable — because Juno’s internals are relying on those packages and libraries, too. So, to make sure Juno remains operational no matter what’s installed in the system, it doesn’t let you upgrade those. However, we try to ship Juno with as few pre-installed packages as possible — so that you can install whichever version you need.

I can’t install a package

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 installer 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: Install Python packages in Juno.

I’ve installed a package, but installer still shows “Install” button

Please, keep in mind that Juno’s package installer is “stateless”, and is not aware of what is currently installed. It simply overwrites whatever happens to be in /site-packages with every installation — leaving package management to the user. So if it reports a successful installation, and then you search for the same package again, it will always be reported as “not installed”, even though you should be able to import and use the package (assuming it’s pure-Python and all dependencies are also installed).

You can find more information on how Juno’s package installer works here: Install Python packages in Juno.

How do I remove an installed package?

You can remove a package by simply deleting relevant folder or file in /site-packages.

Can I import .py files as modules?

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: Install Python packages in Juno), 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.

Can I install another kernel?

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 doesn’t open Jupyter notebook documents

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. A solution would be to identify and uninstall the culprit, a common abuser is the “Notebook Master” app.

I can’t open notebooks and/or grant access to directories in my cloud storage

Juno integrates with the file system using Apple’s Files app Files app icon, 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); some services won’t even let you open .ipynb files (e.g. Google Drive), which frankly looks like plain misconfiguration on their part. 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.

My hardware keyboard doesn’t have an Esc key

Notebook editor in Juno and Juno Connect responds to default Jupyter shortcuts on your hardware keyboard, and also allows configuring an additional binding to Control, Option or a few other key options, which will duplicate Esc key and will let you enter command mode, for instance.

Can I change the font size?

Both Juno and Juno Connect fully support Dynamic Type, which means they will adjust their UI according to system Text Size setting (Settings > Display & Brightness > Text Size). We are working on an app-specific setting for text size too, which will override the system one — this will be released in one of app’s updates.

Is there a git integration?

Juno integrates with Files Files app icon 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).

Does Juno support nbextensions?

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.

Does Juno support conda environments?

There is no multiple environments support at the moment, no.

App Store is trying to charge me full Juno price to complete app bundle

This is probably because you purchased Juno Connect back when it used to be a free app, with an optional in-app purchase. Unfortunately, App Store only takes into account the actual amount paid for the app in the app bundle — so in this case it thinks that you got Juno Connect for free (even though you may have paid for the in-app purchase), therefore subtracting 0 from bundle price. You are probably better off getting Juno separately, as app bundle will attempt to charge you more. Apologies about this, frankly we wish App Store would just subtract the current Juno Connect price. Perhaps Apple will fix it eventually.