There are several different ways to install python-gphoto2. This allows you to use different versions of libgphoto2. The following instructions apply to python-gphoto2 v2.3.5 and later.
Contents
Since python-gphoto2 v2.3.1 "binary wheels" are provided for many Linux and MacOS computers.
These include a recent version of the libgphoto2 libraries, and pre-built Python interface modules, which makes installation quick and easy.
Use pip's --only-binary
option to install one of these wheels:
$ pip3 install gphoto2 --user --only-binary :all: Collecting gphoto2 Downloading gphoto2-2.3.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.3 MB) |████████████████████████████████| 6.3 MB 953 kB/s Installing collected packages: gphoto2 Successfully installed gphoto2-2.3.5
You can test your installation by running python-gphoto2 as a module:
$ python3 -m gphoto2 python-gphoto2 version: 2.3.5 libgphoto2 version: 2.5.30, standard camlibs, gcc, no ltdl, EXIF libgphoto2_port version: 0.12.1, iolibs: disk ptpip serial usb usbdiskdirect usbscsi, gcc, no ltdl, EXIF, USB, serial without locking python-gphoto2 examples: /home/jim/.local/lib/python3.6/site-packages/gphoto2/examples
This shows you the version numbers of python-gphoto2 & libgphoto2, and where to find the python-gphoto2 example files.
If the installation fails it is most likely because none of the available wheels is compatible with your computer. In this case you must install the dependencies listed below before installing python-gphoto2.
Binary wheels for the Raspberry Pi are available from piwheels. You still need to install some system packages to use these:
$ sudo apt install libgphoto2-6 libgphoto2-port12 libexif12 libltdl7 $ pip3 install gphoto2 --user --only-binary :all:
See the piwheels site for more information.
- Python: http://python.org/ version 3.6 or greater
- libgphoto2: http://www.gphoto.org/proj/libgphoto2/ version 2.5.10 or greater
- build tools: pkg-config, C compiler & linker
In most cases you should use your operating system's package manager to install these.
Note that you need the "development headers" for libgphoto2 and Python.
On some systems these are included in the base package, but on others they need to be installed separately.
Search for libgphoto2-dev
or libgphoto2-devel
or something similar.
Test your installation with the pkg-config
command:
$ pkg-config --modversion libgphoto2 python3 2.5.27 3.6
This downloads python-gphoto2 from PyPI and compiles it with the libgphoto2 installed on your computer.
Note the use of --no-binary
to prevent installation from a binary wheel:
$ pip3 install gphoto2 --user --no-binary :all: Collecting gphoto2 Downloading gphoto2-2.3.5.tar.gz (583 kB) |████████████████████████████████| 583 kB 954 kB/s Preparing metadata (setup.py) ... done Skipping wheel build for gphoto2, due to binaries being disabled for it. Installing collected packages: gphoto2 Running setup.py install for gphoto2 ... done Successfully installed gphoto2-2.3.5 $ python3 -m gphoto2 python-gphoto2 version: 2.3.5 libgphoto2 version: 2.5.27, standard camlibs (SKIPPING lumix), gcc, ltdl, EXIF libgphoto2_port version: 0.12.0, iolibs: disk ptpip serial usb1 usbdiskdirect usbscsi, gcc, ltdl, EXIF, USB, serial lockdev locking python-gphoto2 examples: /home/jim/.local/lib/python3.6/site-packages/gphoto2/examples
This installation may take longer than you expect as the package's modules are compiled during installation.
You can use pip's -v
option to increase verbosity so you can see that it's doing something.
Using the "system" libgphoto2 guarantees compatibility with other operating system packages, but it may not be the latest version of libgphoto2. If the system libgphoto2 is uninstalled than python-gphoto2 will stop working.
If your system libgphoto2 is an old version you can try downloading and building a more recent version, then using it with python-gphoto2.
Follow the "download" link on the libgphoto2 site, then choose a version and download an archive file (tar.xz
, tar.gz
, or tar.bz2
).
After extracting the files, change to the new libgphoto2 directory then configure and build in the usual way:
$ ./configure --prefix=$HOME/.local $ make $ make install
Note the use of --prefix=$HOME/.local
to set the installation directory.
This can be any directory you like, but should not be a system directory such as /usr
.
The configure
script has options to choose different camera drivers, which may be useful if you have an old camera that you would like to use.
You can list the options with ./configure -h
.
To use this local installation of libgphoto2 with python-gphoto2 you set the GPHOTO2_ROOT
environment variable when installing python-gphoto2:
$ GPHOTO2_ROOT=$HOME/.local pip3 install gphoto2 --user --no-binary :all: Collecting gphoto2 Using cached gphoto2-2.3.5.tar.gz (583 kB) Preparing metadata (setup.py) ... done Skipping wheel build for gphoto2, due to binaries being disabled for it. Installing collected packages: gphoto2 Running setup.py install for gphoto2 ... done Successfully installed gphoto2-2.3.5 $ python3 -m gphoto2 python-gphoto2 version: 2.3.5 libgphoto2 version: 2.5.30, standard camlibs, gcc, no ltdl, EXIF libgphoto2_port version: 0.12.1, iolibs: disk ptpip serial usb1 usbdiskdirect usbscsi, gcc, no ltdl, EXIF, USB, serial without locking python-gphoto2 examples: /home/jim/.local/lib/python3.6/site-packages/gphoto2/examples
Most users should not need to use SWIG to install python-gphoto2, unless you need to test a new version of SWIG or modify the Python gphoto2 interface.
SWIG should be installable via your operating system's package manager. Note that this may be an older version of SWIG than the one used to generate the files on PyPI.
You can download the python-gphoto2 source files from the GitHub releases page or you can use git to "clone" the GitHub repository:
$ git clone https://github.com/jim-easterbrook/python-gphoto2.git $ cd python-gphoto2
The developer
directory includes a script to run SWIG.
It has one optional parameter: the installation prefix of the version to be swigged:
$ python3 developer/build_swig.py $HOME/.local
Omitting the parameter uses the system installation:
$ python3 developer/build_swig.py
This builds the interface for the version of libgphoto2 installed on your computer.
The interface files are created in directories with names like src/swig-gp2_5_18
.
This naming scheme allows for different versions of libgphoto2.
The most appropriate version is chosen when the interface is built.
As before, pip is used to build and install python-gphoto2:
$ GPHOTO2_ROOT=$HOME/.local pip3 install --user -v .
The libgphoto2 source includes documentation in "doxygen" format.
If you install doxygen and doxy2swig this documentation can be included in the python interfaces.
Clone the doxy2swig GitHub repos to your working directory, then use developer/build_doc.py
to convert the docs to SWIG format before running SWIG:
$ python3 developer/build_doc.py $HOME/libgphoto2-2.5.30 $ python3 developer/build_swig.py $HOME/.local
Note that build_doc.py
needs the source directory of libgphoto2, not its installation root.
The libgphoto2 docs are in the C source files.