Downloads and Installation#
This notebook has instructions on how to use the debuggingbook code in your own programs.
In short, there are three ways:
Simply run the notebooks in your browser, using the “mybinder” environment. Choose “Binder” in any of the
debuggingbook.orgpages; this will lead you to a preconfigured Jupyter Notebook environment where you can toy around at your leisure.Import the code for your own Python programs. Using
pip install debuggingbook, you can install all code and start using it from your own code. See “Installing Debuggingbook Code for your own Python projects”, below.Download or check out the code and/or the notebooks from the project site. This allows you to edit and run all things locally. However, be sure to also install the required packages; see below for details.
Installing Debuggingbook Code for your own Python projects#
We provide a debuggingbook Python package that you can install using the pip package manager:
$ pip install debuggingbook
This is set up such that additional required Python packages are also installed. However, also see “Install Additional Non-Python Packages” below.
Note that after installation via pip, you may have to install our updated showast module:
$ pip install 'showast@git+https://github.com/andreas-zeller/show_ast.git@andreas'
Once pip is complete, you can import individual classes, constants, or functions from each notebook using
>>> from debuggingbook.<notebook> import <identifier>
where <identifier> is the name of the class, constant, or function to use, and <notebook> is the name of the respective notebook. (If you read this at debuggingbook.org, then the notebook name is the identifier preceding ".html" in the URL).
Here is an example importing Tracer from the chapter on tracing, whose notebook name is Tracer:
>>> from debuggingbook.Tracer import Tracer
>>> with Tracer():
function_to_be_observed()
The “Synopsis” section at the beginning of a chapter gives a short survey on useful code features you can use.
Downloading the Notebooks#
Another way to use the code is to import the notebooks directly. Download the notebooks using this link:
https://www.debuggingbook.org/dist/debuggingbook-notebooks.zip
Then, add your own notebooks into the same folder. After importing bookutils.setup, you can then simply import the code from other notebooks, just as our own notebooks do.
Here is again the above example, importing RandomFuzzer from the chapter on fuzzers – but now from a notebook:
def function_to_be_observed():
pass
import bookutils.setup
from debuggingbook.Tracer import Tracer
with Tracer():
function_to_be_observed()
Calling function_to_be_observed()
2 pass
function_to_be_observed() returns None
Downloading the Code#
If you want to work with code samples, you can download all the Python code here:
https://www.debuggingbook.org/dist/debuggingbook-code.zip
The code files can also be edited if you wish, but (a) they are very obviously generated from notebooks, (b) therefore not much fun to work with, and © if you fix any errors, you’ll have to back-propagate them to the notebook before you can make a pull request.
If you only want to use the Python code, install the code package (see above).
Getting the Code from GitHub#
You can also check out the latest and greatest from GitHub. After cloning the repository from the project page and installing the additional packages (see below), you can cd into notebooks and start jupyter right away!
There also is a Makefile provided with literally hundreds of targets; most important are the ones we also use in continuous integration:
make check-importschecks whether your code is free of syntax errorsmake check-stylechecks whether your code is free of type errorsmake check-coderuns all derived code, testing itmake check-notebooksruns all notebooks, testing them
If you want to contribute to the project, ensure that the above tests run through.
The Makefile has many more, often experimental, targets. make markdown creates a .md variant in markdown/, and there’s also make word and make epub, which are set to create Word and EPUB variants (with mixed results). Try make help for commonly used targets.
Installing Supplemental Packages#
We have attempted to limit the dependencies to a minimum (sometimes using ugly hacks). Generally speaking, if you encounter that a module X is not found, just do pip install X. Most notebooks only need modules that are part of the standard Python library.
For a full list of dependencies, there are two sources.
Step 1: Install Required Python Packages#
The pyproject.toml file within the project root folder lists all Python packages required.
You can do
$ pip install .
to install all required packages (but using pipenv is preferred; see below).
Step 2: Install Additional Non-Python Packages#
The apt.txt file in the binder/ folder lists all Linux packages required.
In most cases, however, it suffices to install the dot graph drawing program (part of the graphviz package). Here are some instructions:
Installing Graphviz on Linux#
Use
$ sudo apt-get install graphviz libgraphviz-dev
to install it.
Installing Graphviz on macOS#
On macOS, if you use conda, run
$ conda install graphviz
If you use HomeBrew, run
$ brew install graphviz
Installing Debuggingbook code in an Isolated Environment#
If you wish to install the debuggingbook code in an environment that is isolated from your system interpreter,
we recommend using Pipenv, which can automatically create a so called virtual environment hosting all required packages.
To accomplish this, please follow these steps:
Step 1: Install PyEnv#
Optionally install pyenv following the official instructions if you are on a Unix operating system.
If you are on Windows, consider using pyenv-win instead.
This will allow you to seamlessly install any version of Python.
Step 2: Install PipEnv#
Install Pipenv following the official installation instructions.
If you have pyenv installed, Pipenv can automatically download and install the appropriate version of the Python distribution.
Otherwise, Pipenv will use your system interpreter, which may or may not be the right version.
Step 3: Install Python Packages#
Run
$ pipenv install .
in the debuggingbook root directory.
Step 4: Install Additional Non-Python Packages#
See above for instructions on how to install additional non-python packages.
Step 5: Enter the Environment#
Enter the environment with
$ pipenv shell
where you can now execute
$ make -k check-code
to run the tests.
Using Docker#
As another alternative, you can also use our Docker images (experimental). Install Docker and then run
$ docker pull zeller24/debuggingbook
$ docker run -it --rm -p 8888:8888 zeller24/debuggingbook
and then in your Web browser, open the URL (http://127.0.0.1/... or http://localhost/...) given in the console output.
This should kick off the same Jupyter environment as in mybinder.org.
If you want to create your own Docker images, use our Dockerfile as a starting point.