Installing scikit-image¶
How you should install scikit-image
depends on your needs and skills:
Simplest solution: scientific Python distribution.
If you can install Python packages and work in virtual environments:
Easy solution but with pitfalls: system package manager (yum, apt, …).
Supported platforms¶
Windows 64-bit on x86 processors
Mac OS X on x86 processors
Linux 64-bit on x86 processors
For information on other platforms, see other platforms.
Version check¶
To see whether scikit-image
is already installed or to check if an install has
worked, run the following in a Python shell or Jupyter notebook:
import skimage
print(skimage.__version__)
or, from the command line:
python -c "import skimage; print(skimage.__version__)"
(Try python3
if python
is unsuccessful.)
You’ll see the version number if scikit-image
is installed and
an error message otherwise.
Scientific Python distributions¶
In a single install these give you Python,
scikit-image
and libraries it depends on, and other useful scientific
packages. They install into an isolated environment, so they won’t conflict
with any existing installed programs.
Drawbacks are that the install can be large and you may not get
the most recent scikit-image
.
We recommend one of these distributions:
When using the scikit-image
documentation, make sure it’s for the version you’ve installed (see
Version check above).
Installation via pip and conda¶
These install only scikit-image
and its dependencies; pip has an option to
include related packages.
pip¶
Prerequisites to a pip install: You’re able to use your system’s command line to install packages and are using a virtual environment (any of several).
While it is possible to use pip without a virtual environment, it is not advised: virtual environments create a clean Python environment that does not interfere with any existing system installation, can be easily removed, and contain only the package versions your application needs. They help avoid a common challenge known as dependency hell.
To install the current scikit-image
you’ll need at least Python 3.6. If
your Python is older, pip will find the most recent compatible version.
# Update pip
python -m pip install -U pip
# Install scikit-image
python -m pip install -U scikit-image
To access the full selection of demo datasets, use scikit-image[data]
.
To include a selection of other scientific Python packages that expand
scikit-image
’s capabilities to include, e.g., parallel processing, you
can install the package scikit-image[optional]
:
python -m pip install -U scikit-image[optional]
Warning
Please do not use the command sudo
and pip
together as pip
may
overwrite critical system libraries which may require you to reinstall your
operating system.
conda¶
Miniconda is a bare-essentials version of the Anaconda package; you’ll need to
install packages like scikit-image
yourself. Like Anaconda, it installs
Python and provides virtual environments.
conda-forge, a conda channel maintained with the latest
scikit-image
package
Once you have your conda environment set up, you can install scikit-image
with the command:
conda install scikit-image
System package managers¶
Using a package manager (yum
, apt-get
, etc.) to install scikit-image
or other Python packages is not your best option:
You’re likely to get an older version.
You’ll probably want to make updates and add new packages outside of the package manager, leaving you with the same kind of dependency conflicts you see when using pip without a virtual environment.
There’s an added risk because operating systems use Python, so if you make system-wide Python changes (installing as root or using sudo), you can break the operating system.
Downloading all demo datasets¶
Some of the data used in our examples is hosted online and is not installed
by default by the procedures explained above. Data are downloaded once, at the
first call, but this requires an internet connection. If you prefer downloading
all the demo datasets to be able to work offline, ensure that package pooch
is installed and then run this command:
python -c 'from skimage.data import download_all; download_all()'
or call download_all()
in your favourite interactive Python environment
(IPython, Jupyter notebook, …).
Other platforms¶
We still support Windows 32-bit on x86 processors but urge switching to Windows 64-bit.
Unsupported platforms include:
Linux on 32-bit x86 processors.
Linux on 32-bit on ARM processors (Raspberry Pi running Raspbian):
While we do not officially support this distribution, we point users to piwheels and their scikit-image’s specific page.
You may need to install additional system dependencies listed for imagecodecs. See issue 4721.
Linux on 64-bit ARM processors (Nvidia Jetson):
Follow the conversation on issue 4705.
Although these platforms lack official support, many of the core developers have experience with them and can help with questions.
If you want to install on an unsupported platform, try building from source.
Tell us which other platforms you’d like to see scikit-image
on!
We are very interested in how scikit-image
gets
used.
If you’d like to package scikit-image
for an as-yet-unsupported platform,
reach out on GitHub.
Additional help¶
If you still have questions, reach out through
our user forum
our developer forum
our chat channel
To suggest a change in these instructions, please open an issue on GitHub.
Installing scikit-image for contributors¶
We are assuming that you have a default Python environment already configured on
your computer and that you intend to install scikit-image
inside of it.
We also make a few more assumptions about your system:
You have a C compiler set up.
You have a C++ compiler set up.
You are running a version of Python compatible with our system as listed in our setup.py file.
You’ve cloned the git repository into a directory called
scikit-image
. You have set up the upstream remote to point to our repository and origin to point to your fork.
This directory contains the following files:
scikit-image
├── asv.conf.json
├── azure-pipelines.yml
├── benchmarks
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.rst
├── CONTRIBUTORS.txt
├── doc
├── INSTALL.rst
├── LICENSE.txt
├── Makefile
├── MANIFEST.in
├── README.md
├── RELEASE.txt
├── requirements
├── requirements.txt
├── setup.cfg
├── setup.py
├── skimage
├── TODO.txt
├── tools
All commands below are assumed to be running from the scikit-image
directory containing the files above.
Build environment setup¶
Once you’ve cloned your fork of the scikit-image repository,
you should set up a Python development environment tailored for scikit-image.
You may choose the environment manager of your choice.
Here we provide instructions for two popular environment managers:
venv
(pip based) and conda
(Anaconda or Miniconda).
venv¶
When using venv
, you may find the following bash commands useful:
# Create a virtualenv named ``skimage-dev``
python -m venv skimage-dev
# Activate it. On Linux and MacOS:
source skimage-dev/bin/activate
# Make sure that pip is up to date
pip install --upgrade pip
# Install all development and runtime dependencies of scikit-image
pip install -r requirements.txt
# Build and install scikit-image from source
pip install -e . -vv ## TODO: to be updated for meson (see meson.md)
# Test your installation
pytest --pyargs skimage
On Windows, please use skimage-dev\Scripts\activate
on the activation step.
conda¶
When using conda for development, we recommend adding the conda-forge channel for the most up-to-date version of many dependencies. Some dependencies we use (for testing and documentation) are not available from the default Anaconda channel. Please follow the official conda-forge installation instructions before you get started.
# Create a conda environment named ``skimage-dev``
conda create --name skimage-dev
# Activate it
conda activate skimage-dev
# Install major development and runtime dependencies of scikit-image
conda install --file requirements/default.txt --file requirements/build.txt --file requirements/test.txt
# Install scikit-image from source
pip install -e . -vv ## TODO: to be updated for meson (see meson.md)
# Test your installation
pytest --pyargs skimage
Updating the installation¶
When updating your installation, it is often necessary to recompile submodules that have changed. Do so with the following commands:
# Grab the latest source
git checkout main
git pull upstream main
# Update the installation
pip install -e . -vv
Testing¶
scikit-image
has an extensive test suite that ensures correct
execution on your system. The test suite must pass before a pull
request can be merged, and tests should be added to cover any
modifications to the code base.
We use the pytest
testing framework, with tests located in the various
skimage/submodule/tests
folders.
Our testing requirements are listed below:
asv
codecov
matplotlib>=3.3
pooch>=1.3.0
pytest>=5.2.0
pytest-cov>=2.7.0
pytest-localserver
pytest-faulthandler
Run all tests using:
pytest skimage
Or the tests for a specific submodule:
pytest skimage/morphology
Or tests from a specific file:
pytest skimage/morphology/tests/test_gray.py
Or a single test within that file:
pytest skimage/morphology/tests/test_gray.py::test_3d_fallback_black_tophat
Use --doctest-modules
to run doctests. For example, run all tests and all
doctests using:
pytest --doctest-modules skimage
Warnings during testing phase¶
Scikit-image tries to catch all warnings in its development builds to ensure
that crucial warnings from dependencies are not missed. This might cause
certain tests to fail if you are building scikit-image with versions of
dependencies that were not tested at the time of the release. To disable
failures on warnings, export the environment variable
SKIMAGE_TEST_STRICT_WARNINGS
with a value of 0 or False and run the
tests:
export SKIMAGE_TEST_STRICT_WARNINGS=False
pytest --pyargs skimage
Platform-specific notes¶
Windows
A run-through of the compilation process for Windows is included in our setup of Azure Pipelines (a continuous integration service).
Debian and Ubuntu
Install suitable compilers:
sudo apt-get install build-essential
Full requirements list¶
Build Requirements
# Also update `tools/pyproject.toml.in`, [build-system] -> requires
meson-python>=0.13.0rc0
wheel
setuptools>=67
packaging>=20
ninja
Cython>=0.29.24
pythran
numpy>=1.21.1
# Developer UI
git+https://github.com/scientific-python/devpy
build
Runtime Requirements
numpy>=1.21.1
scipy>=1.8,<1.9.2; python_version<='3.9'
scipy>=1.8; python_version>'3.9'
networkx>=2.8
pillow>=9.0.1
imageio>=2.4.1
tifffile>=2019.7.26
PyWavelets>=1.1.1
packaging>=20.0
lazy_loader>=0.1
Test Requirements
asv
codecov
matplotlib>=3.3
pooch>=1.3.0
pytest>=5.2.0
pytest-cov>=2.7.0
pytest-localserver
pytest-faulthandler
Documentation Requirements
sphinx>=5.2
sphinx-gallery>=0.11
numpydoc>=1.5
sphinx-copybutton
pytest-runner
scikit-learn
matplotlib>=3.6
dask[array]>=2022.9.2
pandas>=1.5
seaborn>=0.11
pooch>=1.6
tifffile>=2022.8.12
myst-parser
ipywidgets
plotly>=5.10
kaleido
Developer Requirements
pre-commit
rtoml
Data Requirements
The full selection of demo datasets is only available with the following installed:
pooch>=1.3.0
Optional Requirements
You can use scikit-image
with the basic requirements listed above, but some
functionality is only available with the following installed:
- Astropy
Provides FITS I/O capability.
- PyAMG
The
pyamg
module is used for the fastcg_mg
mode of random walker segmentation.
- Dask
The
dask
module is used to speed up certain functions.
SimpleITK
astropy>=3.1.2
# cloudpickle is necessary to provide the 'processes' scheduler for dask
cloudpickle>=0.2.1
dask[array]>=1.0.0,!=2.17.0
matplotlib>=3.3
# Keep pooch version in synch with the one hard coded in
# skimage/data/__init__.py
pooch>=1.3.0
pyamg
Help with contributor installation¶
See Additional help above.