Skip to content
Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time
Copyright (C) 2013-2018 Christian Thomas Jacobs.

This file is part of PyQSO.

PyQSO is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

PyQSO is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with PyQSO.  If not, see <>.


PyQSO is a contact logging tool for amateur radio operators.

Build Status Documentation Status


As the name suggests, PyQSO is written primarily in the Python programming language (version 3.x). The graphical user interface has been developed using the GTK+ library through the PyGObject bindings. Therefore, in order to run PyQSO, the Python interpreter must be present on your system along with support for GTK+. On many Linux-based systems this can be accomplished by installing the following Debian packages:

  • python3
  • gir1.2-gtk-3.0
  • python3-gi-cairo

Several extra packages are necessary to enable the full functionality of PyQSO. Many of these (specified in the requirements.txt file) can be readily installed system-wide using the Python package manager by issuing the following command in the terminal:

sudo pip3 install -U -r requirements.txt

but the complete list is given below:

  • python3-matplotlib (version 1.3.0 or later)
  • python3-numpy
  • libxcb-render0-dev
  • cartopy, for drawing the world map. This package in turn depends on python3-scipy, python3-cairocffi, cython, libproj-dev (version 4.9.0 or later), and libgeos-dev (version 3.3.3 or later).
  • geocoder, for QTH lookups.
  • python3-sphinx, for building the documentation.
  • python3-hamlib, for Hamlib support.

Hamlib support

There currently does not exist a Python 3-compatible Debian package for Hamlib. This library must be built manually to enable Hamlib support. As per the instructions on the Hamlib mailing list, run the following commands in the Hamlib root directory (you may need to run sudo apt-get install build-essential autoconf automake libtool beforehand):

export PYTHON=/usr/bin/python3
autoreconf --install
./configure --with-python-binding
sudo make install

You will also need to append the Hamlib bindings and bindings/.libs directories to the PYTHONPATH:

export PYTHONPATH=$PYTHONPATH:/path/to/hamlib/bindings:/path/to/hamlib/bindings/.libs

Installing and running

Assuming that the current working directory is PyQSO's base directory (the directory that the Makefile is in), PyQSO can be run without installation by issuing the following command in the terminal:

python3 bin/pyqso

If the Python package manager pip3 is available on your system then PyQSO can be installed system-wide using:

sudo make install

Once installed, the following command will run PyQSO:



Guidance on how to use PyQSO is available on Read the Docs and in the screencast below.

PyQSO: A Logging Tool for Amateur Radio Operators

The documentation can also be built locally with the following command:

make docs

which will produce an HTML version of the documentation in docs/build/html that can be opened in a web browser.


If you have any comments or questions about PyQSO please send them via email to Christian Jacobs, M0UOS, at