.. _install:
************
Installation
************
If you want to use released versions of pyjoulescope, **Install from PyPI**.
It's quick and easy! If you want unrelease pyjoulescope software or you
want to develop pyjoulescope, see **Install from Source**.
.. contents:: :local:
Install Python
==============
You will need to install Python 3.8+ x64 for your platform, if it is not already
on your system.
Windows
-------
Download the latest
`Python release for Windows `_.
If in doubt, select the "Windows x86-64 executable installer". Install Python
and allow it to update your path. Open a Command Prompt and type::
> python -VV
Python 3.9.4 (tags/v3.9.4:1f2e308, Apr 6 2021, 13:40:21) [MSC v.1928 64 bit (AMD64)]
Note that Windows usually installs python 3 as python.exe. This documentation
often uses the executable "python3".
macOS
-----
The easiest way to install Python on macOS is through
`Homebrew `_. Follow the instructions to install brew,
then type::
$ brew install python3 libusb
$ python3 -VV
Linux
-----
Use your package manager to install python. On Debian-based systems, including
Ubuntu, use apt::
$ sudo apt install python3-dev python3-pip libusb-1.0
$ python3 -VV
The user must have sufficient permissions to access Joulescopes.
Many linux systems, including Debian, Ubuntu, and Raspberry Pi OS, use udev.
We include a
`udev script `_
in the repository to give permissions to all users. To install it::
$ wget https://raw.githubusercontent.com/jetperch/pyjoulescope/master/99-joulescope.rules
$ sudo cp 99-joulescope.rules /etc/udev/rules.d/
$ sudo udevadm control --reload-rules
Install from PyPI
=================
PyPI is the "Python Package Index" which distributes most python packages.
To install this python package from PyPI using `pip` (or `pipenv`)::
pip3 install -U joulescope
That's it! The extra "-U" will upgrade to the latest version, just in case.
The joulescope package requires Python 3.6+ and 64-bit Python.
If your system does not meet these requirements, then the installation will
fail with an error message.
Troubleshooting
---------------
If you get an error showing "CERTIFICATE_VERIFY_FAILED", your corporate
IT policy is likely blocking the pypi SSL certificate. You have several
options:
A. Contact your IT department to correct the problem.
B. Ignore the SSL validation (slight security risk)::
pip3 install --trusted-host pypi.org --trusted-host files.pythonhosted.org -U joulescope
For more discussion, see `StackOverflow `.
Install from Source
===================
The pyjoulescope package repository is open-source on GitHub. You can clone
the repository::
git clone https://github.com/jetperch/pyjoulescope.git
You can also download the tarbal (Linux, macOS)::
curl -Ol https://github.com/jetperch/pyjoulescope/tarball/master
or the ZIP file (Windows)::
https://github.com/jetperch/pyjoulescope/archive/master.zip
Change directory into the extracted file. Install the developer dependencies::
pip3 install -U -e .[dev]
If you plan on using pyjoulescope, you should install it::
pip3 install -U .
Using virtualenv
================
Although not required, the developers recommend using
[virtualenv](https://virtualenv.pypa.io/en/latest/) to minimize any
dependency conflicts with different python applications.
First install virtualenv::
pip3 install -U virtualenv
And then create a new virtual environment::
virtualenv ~/venv/joulescope
You need to activate the virtual environment whenever you start
a new terminal.
On POSIX (Linux, Mac OS X with homebrew)::
source ~/venv/joulescope/bin/activate
On Windows::
virtualenv c:\venv\joulescope
source c:\venv\joulescope\Scripts\activate
Developing Joulescope
=====================
If you plan on developing pyjoulescope, you probably want to run directly
from the source code directory. First, install the dependencies::
pip3 install -U -r requirements.txt
You can then build the native modules and adjust your PYTHONPATH so that
python finds the joulescope package.
For Linux and macOS::
python setup.py build_ext --inplace
export PYTHONPATH=`cwd`
For Windows::
python setup.py build_ext --inplace
set PYTHONPATH=%cd%