Setting up a Chromebook for Python programming

We can now use Chromebooks for data science or quantitative research using Chromebooks with the introduction of Linux Debian distribution via the Crostini add-on in Chrome OS! This provides us with a hybrid solution of being able to perform intitial data explorations and training simple models locally before transitioning to Google CoLab for more heavy duty number crunching! See my post on Introduction to Google Colab for more details.

This will run through the steps used setup the Pixelbook / Chromebook (I have Pixelbook) for programming in Python using the Anaconda Distribution. It assumes general knowledge of the below:

  • Basic general knowledge of Linux systems (i.e., changing directories, listing all files in directories)

  • Use of a Linux editor (i.e., vim).


Installing Linux Debian (i.e., Crostini) on the Pixelbook

  • Go to Settings in your Pixelbook and scroll/search to Linux (Beta).

  • Toggle the Linux Apps for Chrome Book option. This will install the Terminal program on to your Pixelbook.

  • Terminal is your access point into the Linux Debian system in the Pixelbook.

Customizing the Crostini installation

These are the customizations that I use on my Pixelbook Crostini. You don't need to follow any of these customizations, and if you have other cool things you do with your personal Chromebook Crostini setup feel free to share them with me!

Include stretch_backports to your Crostini distribution

  • Include stretch-backports to the Crostini Virtual Machine (VM) version of debian stretch by updating the source.list

$  sudo vim /etc/apt/sources.list
  • Add the following the backports repository at the bottom.

# Backports repository
deb http://deb.debian.org/debian stretch-backports main contrib non-free

Update your Linux installation

  • Download the Linux Debian updates and upgrade and installs them. apt-get downloads the package lists from the repositories and 'updates' them to get information on the newest version of packages and their dependences. dist-upgrade actually performs the install of the latest packages and handles dependencies intelligently.

$ sudo apt-get update && sudo apt-get dist-upgrade

Install tree

  • Make directory structures look nicer by installing tree.

$ sudo apt install tree
$ tree -d

Install fonts-powerline

  • Making fonts look nicer in terminal by installing fonts-powerline.

$ sudo apt -t stretch-backports install fonts-powerline

Install tmux

  • Install tmux, a terminal multiplexer.

$ sudo apt -t stretch-backports install tmux
  • Customize tmux by adding .tmux.conf in your home directory and add the following

# Enable mouse mode (tmux 2.1 and above)
set -g mouse on

Make ChromeOS shortcuts function in Terminal

  • To make the ChromeOS shortcuts function in Terminal, press Ctrl-Shift-p in Terminal.
    • This will open the Profile settings for Terminal in the Chrome Browser.

    • Scroll to keybindings and enter the following

{
  "Alt-187": "PASS",
  "Alt-189": "PASS",
  "Alt-219": "PASS",
  "Alt-221": "PASS",
  "Ctrl-Shift-W": "PASS"
}

Install nodejs

  • Install nodejs as you need this for tldr and for Jupyter Lab.

$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ sudo apt-get install -y build-essential
  • tldr is a short and useful help page for commands. Upon installing, we need to update it to the latest manual. We can then test it with to see the concise help file for the conda command.

$ sudo npm install -g tldr
$ tldr --update
$ tldr conda

Downloading & installing the Anaconda Distribution of Python

  • Go to the Anaconda website and download the 3.X.X version of Python for Linux. This will download an Anaconda3-x.x.x-Linux-x86_64.sh into your downloads folder.

  • Go to the Files app in Chrome OS and transfer the Anaconda3-x.x.x-Linux-x86_64.sh file from Downloads into the Linux files folder.

  • Open Terminal in your Pixelbook and ensure that you are in your home directory (i.e., /home/USERNAME)

  • Install the Anaconda Python distribution.

$ bash Anaconda3-x.x.x-Linux-x86_64.sh`
  • When prompted, install VSCode too (i.e., Microsoft Visual Studio Code).

Adding Anaconda3 distribution to the Linux PATH

  • Open Terminal and check that you are in your home directory (i.e., /home/USERNAME)

  • Use the vim editor to open the .bashrc file.

$ vim .bashrc
  • Add the following line into the .bashrc file and save. This line will add the Anaconda Python executable files into your Linux PATH.

export PATH="/home/<USERNAME>/anaconda3/bin/:$PATH"
  • Rerun the .bashrc file.

$ source .bashrc
  • Activate the Python environment to check that you have successfully added Anaconda Python execuable files into your Linux PATH.

$ source activate root

Setting up Jupyter Lab

  • Open Terminal.

  • Obtain the ip address of your Linux Crostini terminal

$ ip addr
  • Analyze output below.

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
   valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
   valid_lft forever preferred_lft forever
4: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:4f:42:95 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 100.115.92.205/28 brd 100.115.92.207 scope global eth0
   valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fe4f:4295/64 scope link
   valid_lft forever preferred_lft forever
  • Record the second ip address which is in the 'Broadcast' section. For my system it is 100.115.92.205 but it will be different for yours. We will continue to use my ip address as an example.

  • Generate a jupyter_notebook_config.py in the director /home/<user>/.jupyter/.

$ jupyter notebook --generate-config
  • In the /home/<user>/.jupyter/, open the file by using vim jupyter_notebook_config.py and update the following lines:

c.NotebookApp.allow_origin ='*' #allow all origins
c.NotebookApp.ip = '100.115.92.205' # listen to specific IP address
  • Alternatively, you can request that the NoteBookApp.ip listens to all IP addresses (less secure)

c.NotebookApp.allow_origin ='*' #allow all origins
c.NotebookApp.ip = '*' # listen to all IP addresses
  • You're now ready to start programming in Python on your Pixelbook! Feel free to use any of the following commands in Terminal:

$ jupyter lab
$ jupyter notebook
$ spyder
$ anaconda-navigator
  • I usually use Spyder for serious development and switch between Jupyter Lab and Jupyter `Notebook for creating the coding blog posts. anaconda-navigator is a GUI for interfacing with your conda environments and packages.

  • If you need more powerful computing resources, I recommend the use of Google Colab. See my post on Hybrid machine learning with Colab for more details.

Comments

Comments powered by Disqus