Installing Jupyter Notebook on Termux on Android with *one* command
tldr…
(obviously I take no responsibility, this is all at your own risk, yada yada yada):
curl -O https://raw.githubusercontent.com/chrisward/scripts/main/setup_termux.sh && bash setup_termux.sh
Not so tldr…
I’m a huge fan of Jupyter Notebook — it’s a great way to prototype Python Scripts fast, and with notes/diagrams. As such, I’ve come to rely on a few Notebooks for my daily life. Annoyingly though, I could only run them on my laptop.
Enter Termux, a terminal emulator and Linux environment for Android.
Last autumn whilst on holiday (yes, I know…), a hyperfixation moment led me to spend rather too much time trying to install Jupyter Notebook and all the other Python libraries my Notebooks rely upon onto my Android device.
I succeeded, but with great pain, and of course I didn’t note down the steps and the failures. So when I got a new phone, I had to do it all over again — with the same pain, and the same failures… and the same forgetting to note down all the steps. So I was determined to get the list of commands right and, even better, knock it into one hosted bash script so the entire thing could be run in one command.
This was no easy feat — and at some point this script will be out of date as libraries etc are upgraded. I’ll try and keep it as up to date as possible.
OK that’s nice, now how do I do it?
Right, well assuming you’ve first of all downloaded Termux (don’t use Google Play — download the APK from F-Droid), run the following:
curl -O https://raw.githubusercontent.com/chrisward/scripts/main/setup_termux.sh && bash setup_termux.sh
Occasionally you’ll be asked a series of questions about conflicts, to which you can answer “y” to all of them.
After completion (assuming all went well), you should be able to run…
jupyter notebook
Then copy the URL with the auth token and paste it into your chosen web browser. Then, just like magic, you can Jupyter Notebook…
Who even are you? I don’t know you. Why should I run your script?
Do feel free to take a look at it. :)
It doesn’t work…
I last tested this on an Android 14 Pixel 8 Pro on 7th June 2024. If it doesn’t work, please comment and let me know! The likely reason for it is upgrades to libraries (the script doesn’t specify versions). Below is the output of the pkg list-installed
command on the emulator I last ran it on. If any library versions are different, that’s a good place to start looking.
Listing... Done
apt/stable,now 2.7.14 aarch64 [installed]
bash-completion/stable,now 2.14.0 all [installed,automatic]
bash/stable,now 5.2.26-1 aarch64 [installed]
binutils-bin/stable,now 2.42 aarch64 [installed,automatic]
binutils-libs/stable,now 2.42 aarch64 [installed,automatic]
binutils/stable,now 2.42 aarch64 [installed]
brotli/stable,now 1.1.0 aarch64 [installed,automatic]
bzip2/stable,now 1.0.8-6 aarch64 [installed]
ca-certificates/stable,now 1:2024.03.11-2 all [installed]
clang/stable,now 18.1.6-1 aarch64 [installed]
cmake/stable,now 3.29.5 aarch64 [installed]
command-not-found/stable,now 2.4.0-27 aarch64 [installed]
coreutils/stable,now 9.5 aarch64 [installed]
curl/stable,now 8.8.0 aarch64 [installed]
dash/stable,now 0.5.12 aarch64 [installed]
debianutils/stable,now 5.18 aarch64 [installed]
dialog/stable,now 1.3-20240307-0 aarch64 [installed]
diffutils/stable,now 3.10 aarch64 [installed]
dos2unix/stable,now 7.5.2 aarch64 [installed]
dpkg/stable,now 1.22.6 aarch64 [installed]
ed/stable,now 1.20.2 aarch64 [installed]
findutils/stable,now 4.9.0-2 aarch64 [installed]
fontconfig/stable,now 2.15.0 aarch64 [installed,automatic]
freetype/stable,now 2.13.2 aarch64 [installed,automatic]
fribidi/stable,now 1.0.15 aarch64 [installed,automatic]
gawk/stable,now 5.3.0 aarch64 [installed]
gdbm/stable,now 1.23 aarch64 [installed,automatic]
giflib/stable,now 5.2.2 aarch64 [installed,automatic]
git/stable,now 2.45.2 aarch64 [installed]
glib/stable,now 2.80.2 aarch64 [installed,automatic]
gpgv/stable,now 2.4.5-1 aarch64 [installed]
grep/stable,now 3.11 aarch64 [installed]
gzip/stable,now 1.13 aarch64 [installed]
harfbuzz/stable,now 8.5.0 aarch64 [installed,automatic]
inetutils/stable,now 2.4-1 aarch64 [installed]
jsoncpp/stable,now 1.9.5-2 aarch64 [installed,automatic]
krb5/stable,now 1.21.2 aarch64 [installed,automatic]
ldns/stable,now 1.8.3-2 aarch64 [installed,automatic]
less/stable,now 633-1 aarch64 [installed]
libandroid-execinfo/stable,now 0.1-1 aarch64 [installed,automatic]
libandroid-glob/stable,now 0.6-2 aarch64 [installed]
libandroid-posix-semaphore/stable,now 0.1-3 aarch64 [installed,automatic]
libandroid-shmem/stable,now 0.5 aarch64 [installed,automatic]
libandroid-spawn/stable,now 0.3 aarch64 [installed,automatic]
libandroid-support/stable,now 28-3 aarch64 [installed]
libarchive/stable,now 3.7.4 aarch64 [installed,automatic]
libassuan/stable,now 2.5.7 aarch64 [installed]
libbz2/stable,now 1.0.8-6 aarch64 [installed]
libc++/stable,now 26b aarch64 [installed]
libcairo/stable,now 1.18.0 aarch64 [installed,automatic]
libcap-ng/stable,now 2:0.8.5 aarch64 [installed]
libcompiler-rt/stable,now 18.1.6-1 aarch64 [installed,automatic]
libcrypt/stable,now 0.2-5 aarch64 [installed]
libcurl/stable,now 8.8.0 aarch64 [installed]
libdb/stable,now 18.1.40-4 aarch64 [installed,automatic]
libedit/stable,now 20240517-3.1-0 aarch64 [installed,automatic]
libevent/stable,now 2.1.12-2 aarch64 [installed]
libexpat/stable,now 2.6.2 aarch64 [installed]
libffi/stable,now 3.4.6-1 aarch64 [installed,automatic]
libgcrypt/stable,now 1.10.3 aarch64 [installed]
libgmp/stable,now 6.3.0 aarch64 [installed]
libgnutls/stable,now 3.8.5 aarch64 [installed]
libgpg-error/stable,now 1.49 aarch64 [installed]
libgraphite/stable,now 1.3.14-2 aarch64 [installed,automatic]
libiconv/stable,now 1.17 aarch64 [installed]
libidn2/stable,now 2.3.7 aarch64 [installed]
libimagequant/stable,now 4.3.1 aarch64 [installed,automatic]
libjpeg-turbo/stable,now 3.0.3 aarch64 [installed,automatic]
libllvm/stable,now 18.1.6-1 aarch64 [installed,automatic]
liblz4/stable,now 1.9.4 aarch64 [installed]
liblzma/stable,now 5.6.2 aarch64 [installed]
liblzo/stable,now 2.10-3 aarch64 [installed,automatic]
libmd/stable,now 1.1.0 aarch64 [installed,automatic]
libmpfr/stable,now 4.2.1 aarch64 [installed]
libnettle/stable,now 3.9.1 aarch64 [installed]
libnghttp2/stable,now 1.62.1 aarch64 [installed]
libnghttp3/stable,now 1.3.0 aarch64 [installed,automatic]
libnpth/stable,now 1.6-2 aarch64 [installed]
libopenblas/stable,now 0.3.27 aarch64 [installed,automatic]
libpixman/stable,now 0.43.4 aarch64 [installed,automatic]
libpng/stable,now 1.6.43 aarch64 [installed,automatic]
libraqm/stable,now 0.10.1 aarch64 [installed,automatic]
libresolv-wrapper/stable,now 1.1.7-4 aarch64 [installed,automatic]
libsmartcols/stable,now 2.39.3-4 aarch64 [installed,automatic]
libsodium/stable,now 1.0.20 aarch64 [installed,automatic]
libsqlite/stable,now 3.46.0 aarch64 [installed,automatic]
libssh2/stable,now 1.11.0 aarch64 [installed]
libtiff/stable,now 4.6.0 aarch64 [installed,automatic]
libtirpc/stable,now 1.3.4-1 aarch64 [installed]
libunbound/stable,now 1.20.0 aarch64 [installed,automatic]
libunistring/stable,now 1.1 aarch64 [installed]
libuv/stable,now 1.48.0 aarch64 [installed,automatic]
libwebp/stable,now 1.4.0-rc1-0 aarch64 [installed,automatic]
libx11/stable,now 1.8.9 aarch64 [installed,automatic]
libxau/stable,now 1.0.11 aarch64 [installed,automatic]
libxcb/stable,now 1.17.0 aarch64 [installed,automatic]
libxdmcp/stable,now 1.1.5 aarch64 [installed,automatic]
libxext/stable,now 1.3.6 aarch64 [installed,automatic]
libxml2/stable,now 2.12.7 aarch64 [installed,automatic]
libxrender/stable,now 0.9.11 aarch64 [installed,automatic]
libzmq/stable,now 4.3.5 aarch64 [installed]
littlecms/stable,now 2.16 aarch64 [installed,automatic]
lld/stable,now 18.1.6-1 aarch64 [installed,automatic]
llvm/stable,now 18.1.6-1 aarch64 [installed,automatic]
lsof/stable,now 4.99.3 aarch64 [installed]
make/stable,now 4.4.1 aarch64 [installed,automatic]
matplotlib/stable,now 3.9.0 aarch64 [installed]
nano/stable,now 8.0 aarch64 [installed]
ncurses-ui-libs/stable,now 6.4.20231001-3 aarch64 [installed,automatic]
ncurses/stable,now 6.4.20231001-3 aarch64 [installed]
ndk-sysroot/stable,now 26b-3 aarch64 [installed,automatic]
net-tools/stable,now 2.10.0 aarch64 [installed]
ninja/stable,now 1.12.1 aarch64 [installed,automatic]
openjpeg/stable,now 2.5.2 aarch64 [installed,automatic]
openssh-sftp-server/stable,now 9.7p1 aarch64 [installed,automatic]
openssh/stable,now 9.7p1 aarch64 [installed,automatic]
openssl/stable,now 1:3.2.1-1 aarch64 [installed]
patch/stable,now 2.7.6-3 aarch64 [installed]
patchelf/stable,now 0.18.0 aarch64 [installed]
pcre2/stable,now 10.43 aarch64 [installed]
pcre/stable,now 8.45-1 aarch64 [installed]
pkg-config/stable,now 0.29.2-2 aarch64 [installed,automatic]
procps/stable,now 3.3.17-5 aarch64 [installed]
psmisc/stable,now 23.7 aarch64 [installed]
python-contourpy/stable,now 1.2.1 aarch64 [installed,automatic]
python-ensurepip-wheels/stable,now 3.11.9-1 all [installed,automatic]
python-numpy/stable,now 1.26.4-1 aarch64 [installed,automatic]
python-pillow/stable,now 10.3.0-1 aarch64 [installed,automatic]
python-pip/stable,now 24.0-2 all [installed,automatic]
python/stable,now 3.11.9-1 aarch64 [installed]
readline/stable,now 8.2.10 aarch64 [installed]
resolv-conf/stable,now 1.3 aarch64 [installed,automatic]
rhash/stable,now 1.4.4 aarch64 [installed,automatic]
rust-std-aarch64-linux-android/stable,now 1.78.0-1 all [installed,automatic]
rust/stable,now 1.78.0-1 aarch64 [installed]
sed/stable,now 4.9-1 aarch64 [installed]
tar/stable,now 1.35 aarch64 [installed]
termux-am-socket/stable,now 1.5.0 aarch64 [installed]
termux-am/stable,now 0.8.0 all [installed]
termux-auth/stable,now 1.4-2 aarch64 [installed,automatic]
termux-exec/stable,now 1:1.0 aarch64 [installed]
termux-keyring/stable,now 3.12 all [installed]
termux-licenses/stable,now 2.0-3 all [installed]
termux-tools/stable,now 1.42.2 all [installed]
ttf-dejavu/stable,now 2.37-8 all [installed,automatic]
unbound/stable,now 1.20.0 aarch64 [installed]
unzip/stable,now 6.0-9 aarch64 [installed]
util-linux/stable,now 2.39.3-4 aarch64 [installed]
xxhash/stable,now 0.8.2 aarch64 [installed]
xz-utils/stable,now 5.6.2 aarch64 [installed]
zlib/stable,now 1.3.1 aarch64 [installed]
zstd/stable,now 1.5.6 aarch64 [installed,automatic]
And that’s it!
Do enjoy! And please leave any comments below!