Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update install instructions, simplify requirements #1526

Merged
merged 9 commits into from
May 29, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
38 changes: 17 additions & 21 deletions DEPENDS.txt
Original file line number Diff line number Diff line change
@@ -1,32 +1,28 @@
Build Requirements
------------------
* `Python >= 2.6 <http://python.org>`__
* `Numpy >= 1.6 <http://numpy.scipy.org/>`__
* `Numpy >= 1.6.1 <http://numpy.scipy.org/>`__
* `Cython >= 0.21 <http://www.cython.org/>`__
* `Six >=1.3 <https://pypi.python.org/pypi/six>`__

You can use pip to automatically install the base dependencies as follows::

$ pip install -r requirements.txt
* `Six >=1.4 <https://pypi.python.org/pypi/six>`__
* `SciPy >=0.9 <http://scipy.org>`__

Runtime requirements
--------------------
* `SciPy <http://scipy.org>`__
* `Matplotlib <http://matplotlib.sf.net>`__
* `NetworkX <https://networkx.github.io>`__
* `Pillow <https://pypi.python.org/pypi/Pillow>`__
(or `PIL <http://www.pythonware.com/products/pil/>`__)
* `dask array <http://dask.pydata.org/en/latest/>`__

Known build errors
------------------
On Windows, the error ``Error:unable to find vcvarsall.bat`` means that
distutils is not correctly configured to use the C compiler. Modify (or create,
if not existing) the configuration file ``distutils.cfg`` (located for
example at ``C:\Python26\Lib\distutils\distutils.cfg``) to contain::
* `Python >= 2.6 <http://python.org>`__
* `Numpy >= 1.6.1 <http://numpy.scipy.org/>`__
* `SciPy >= 0.9 <http://scipy.org>`__
* `Matplotlib >= 1.1.0 <http://matplotlib.sf.net>`__
* `NetworkX >= 1.8 <https://networkx.github.io>`__
* `Six >=1.4 <https://pypi.python.org/pypi/six>`__
* `Pillow >= 1.7.8 <https://pypi.python.org/pypi/Pillow>`__
(or `PIL <http://www.pythonware.com/products/pil/>`__)
* `dask[array] >= 0.5.0 <http://dask.pydata.org/en/latest/>`__


You can use pip to automatically install the runtime dependencies as follows::

$ pip install -r requirements.txt

[build]
compiler=mingw32

Optional Requirements
---------------------
Expand Down
2 changes: 1 addition & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ install:
- "python -c \"import struct; print(struct.calcsize('P') * 8)\""

# Install the build and runtime dependencies of the project.
- "%CMD_IN_ENV% pip install -v %WHEELHOUSE% -r tools/appveyor/requirements.txt"
- "%CMD_IN_ENV% pip install -v --trusted-host 28daf2247a33ed269873-7b1aad3fab3cc330e1fd9d109892382a.r6.cf2.rackcdn.com %WHEELHOUSE% -r tools/appveyor/requirements.txt"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I presume we can't use travis-wheels.scikit-image.org due to https issues? But a note here to say that those are the same would be good

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The two sites are not the same, http://28daf2247a33ed269873-7b1aad3fab3cc330e1fd9d109892382a.r6.cf2.rackcdn.com hosts the Windows wheels, http://travis-wheels.scikit-image.org hosts the linux. This could be combined into a single container.

Copy link
Member

@stefanv stefanv May 27, 2015 via email

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- "%CMD_IN_ENV% pip install -v -r requirements.txt"
- "%CMD_IN_ENV% python setup.py bdist_wheel bdist_wininst"
- ps: "ls dist"
Expand Down
190 changes: 156 additions & 34 deletions doc/source/install.txt
Original file line number Diff line number Diff line change
@@ -1,53 +1,153 @@
Pre-built installation
Installing scikit-image
-----------------------
If you are on Mac OS X you're lucky, open the terminal and install
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why the comment about people on OSX being lucky? I'd get rid of this.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Surely you did not forget that OSX is the world's most advanced operating system?

And that the latest MacBook is also available in gold?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because wheels exists and installation is straight forward containing only one step.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But joking aside, in this particular case, if you are on OSX, you are lucky. Not a value judgement about operating systems, just a comment on the convenience of pip installs.

Copy link
Member

@stefanv stefanv May 29, 2015 via email

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

scikit-image with pip::

pip install scikit-image


For Python 3 use pip3 instead::

pip3 install scikit-image


For other systems, please read on.


Linux, Mac and Windows
----------------------
An easy light weight method to get scikit-image installed on all of the most
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These instructions are insufficient. I will rework.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are they missing?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll have a PR ready in a few minutes.

popular operating systems is by using miniconda_. Go over and grab the
appropriate miniconda_ version for your operating system and install it. When
you have miniconda_ installed, open a terminal and install scikit-image
with conda::

`Windows binaries
<http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-image>`__
are kindly provided by Christoph Gohlke (note that, when upgrading,
you should first uninstall any older versions).
conda install scikit-image

The latest stable release is also included as part of
`Enthought Canopy <https://www.enthought.com/products/canopy/>`__,
`Python(x,y) <http://code.google.com/p/pythonxy/wiki/Welcome>`__ and
`Anaconda <https://store.continuum.io/cshop/anaconda/>`__.

On Debian and Ubuntu, a Debian package ``python-skimage`` can be found in
`the Neurodebian repository <http://neuro.debian.net>`__. Follow `the
instructions <http://neuro.debian.net/#how-to-use-this-repository>`__ to
add Neurodebian to your system package manager, then look for
``python-skimage`` in the package manager.
If you prefer *not* using miniconda, find instructions for your operating
system below.

On systems that support setuptools, the package can be installed from the
`Python packaging index <http://pypi.python.org/pypi/scikit-image>`__ using

::
Windows
-------
Scikit-image comes with the Python distributions Anaconda_,
`Enthought Canopy`_ and `Python(x,y)`_. If you install any of
them, scikit-image should already be installed.

pip install -U scikit-image
.. _Anaconda: https://store.continuum.io/cshop/anaconda/
.. _Enthought Canopy: https://www.enthought.com/products/canopy/
.. _Python(x,y): http://code.google.com/p/pythonxy/wiki/Welcome

Installation from source
------------------------

Obtain the source from the git-repository at
`http://github.com/scikit-image/scikit-image
<http://github.com/scikit-image/scikit-image>`_ by running::
If you prefer the regular Python distribution from python.org_, you can
install scikit-image manually by downloading packages. You will need numpy_,
scipy_ and the scikit-image package. You can find the packages in `Cristoph
Gohlke's`_ web page with compiled Python packages. Here is the direct link to
the `scipy section`_, `numpy section`_ and `scikit-image section`_. Make sure
you download the right version for your system. E.g. numpy for Python 3.4 64
bit would be ``numpy‑1.9.2+mkl‑cp34‑none‑win_amd64.whl``.

git clone http://github.com/scikit-image/scikit-image.git
To install Goehlke's packages, use pip::

in a terminal (you will need to have git installed on your machine).
pip install wheel
pip install --find-links Downloads scikit-image

If you do not have git installed, you can also download a zipball from
`https://github.com/scikit-image/scikit-image/zipball/master
<https://github.com/scikit-image/scikit-image/zipball/master>`_.
Here ``--find-links Downloads`` means that pip will look for packages in the
folder named `Downloads`. Make sure that is where you saved the packages from
Goehlke.

The scikit can be installed using::
As you see, installing scikit-image with pip requires some extra manual labor,
so using a Python distribution is recommended on Windows.

pip install .
If you have a brave soul, you can also install scikit-image on Windows by
compiling it from source::

If you prefer, you can use it without installing, by simply adding
this path to your ``PYTHONPATH`` variable and compiling extensions
in-place::
pip install scikit-image


If you experience the error ``Error:unable to find vcvarsall.bat`` it means that
distutils is not correctly configured to use the C compiler. Modify (or create,
if not existing) the configuration file ``distutils.cfg`` (located for
example at ``C:\Python26\Lib\distutils\distutils.cfg``) to contain::

[build]
compiler=mingw32

For more details on compiling in Windows, there is a lot of knowledge iterated
into the `setup of appveyor`_ (a continious integration service).

.. _miniconda: http://conda.pydata.org/miniconda.html
.. _python.org: http://python.org/
.. _numpy: http://www.numpy.org/
.. _scipy: http://www.scipy.org/
.. _Cristoph Gohlke's: http://www.lfd.uci.edu/~gohlke/pythonlibs/
.. _numpy section: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
.. _scipy section: http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
.. _scikit-image section: http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-image
.. _setup of appveyor: https://github.com/scikit-image/scikit-image/blob/master/appveyor.yml


Debian and Ubuntu
-----------------
On Debian and Ubuntu install scikit-image with::

sudo apt-get install python-skimage


Or if you use Python 3::

sudo apt-get install python3-skimage


On Ubuntu scikit-image is found in the `universe repo`_, and python-skimage can
also be found in the `Neurodebian repository`_. For using the repository
follow the `Neurodebian instructions`_ to add Neurodebian to your system
package manager.

Ubuntu 14.04 LTS ships with version 0.9.3 of scikit-image, so if you need an
up-to-date version you must compile scikit-image yourself. First install the
dependencies::

sudo apt-get install python-matplotlib python-numpy python-pil python-scipy


or for Python 3::

sudo apt-get install python3-matplotlib python3-numpy python3-pil python3-scipy


Get compilers::

sudo apt-get install build-essential cython


Compile and install the latest stable version of scikit-image::

pip install scikit-image


.. _universe repo: https://help.ubuntu.com/community/Repositories/Ubuntu
.. _Neurodebian repository: http://neuro.debian.net/
.. _Neurodebian instructions: http://neuro.debian.net/#how-to-use-this-repository


Other Unixes
------------
Install binary packages of cython, matplotlib, numpy, pillow and scipy if they
are available in your operating system's package manager. Make sure you have
a C and C++ compilers. Then install scikit-image with pip::

pip install scikit-image


Upgrading
---------
You can upgrade scikit-image by::

pip install --upgrade --no-deps scikit-image
pip install scikit-image # installs new dependencies, if changed

python setup.py build_ext -i

Building with bento
-------------------
Expand All @@ -73,4 +173,26 @@ From the ``scikit-image`` source directory::
Depending on file permissions, the install commands may need to be run as
sudo.


Install bleeding edge development version
-----------------------------------------

Obtain the source from the git-repository at
http://github.com/scikit-image/scikit-image by running::

git clone http://github.com/scikit-image/scikit-image

If you do not have git installed on your machine, you can also download a
zipball from https://github.com/scikit-image/scikit-image/zipball/master.

The scikit can be installed using::

pip install .

If you prefer, you can use a link instead by compiling extensions in-place::

python setup.py build_ext -i
pip install -e .


.. include:: ../../DEPENDS.txt
6 changes: 3 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cython>=0.21
matplotlib>=1.1.0
numpy>=1.6.1
scipy>=0.9
six>=1.3
scipy>=0.9.0
six>=1.4
networkx>=1.8
pillow>=1.7.8
dask[array]>=0.5.0
37 changes: 16 additions & 21 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,24 +34,10 @@
with open('requirements.txt') as fid:
INSTALL_REQUIRES = [l.strip() for l in fid.readlines() if l]

# development versions do not have the cythonized files
if VERSION.endswith('dev'):
SETUP_REQUIRES = [r for r in INSTALL_REQUIRES if r.startswith('cython')]
else:
INSTALL_REQUIRES = [r for r in INSTALL_REQUIRES
if not r.startswith('cython')]
SETUP_REQUIRES = []


# list requirements for PyPI
REQUIRES = [r.replace('>=', ' (>= ') + ')'
for r in INSTALL_REQUIRES + SETUP_REQUIRES]
# requirements for those browsing PyPI
REQUIRES = [r.replace('>=', ' (>= ') + ')' for r in INSTALL_REQUIRES]
REQUIRES = [r.replace('==', ' (== ') for r in REQUIRES]


# do not attempt to install numpy and scipy until they have eggs available
INSTALL_REQUIRES = [r for r in INSTALL_REQUIRES
if not r.startswith(('scipy', 'numpy'))]
REQUIRES = [r.replace('[array]', '') for r in REQUIRES]


def configuration(parent_package='', top_path=None):
Expand All @@ -73,9 +59,17 @@ def configuration(parent_package='', top_path=None):


if __name__ == "__main__":
# purposely fail loudly if numpy or scipy are not available
from numpy.distutils.core import setup
import scipy
# purposely fail if numpy is not available
# other dependecies will be resolved by pip (install_requires)
try:
from numpy.distutils.core import setup
except ImportError:
print('To install scikit-image from source, you will need numpy.\n' +
'Install numpy with pip:\n' +
'pip install numpy\n'
'Or use your operating system package manager. For more\n' +
'details, see http://scikit-image.org/docs/stable/install.html')
sys.exit(1)

setup(
name=DISTNAME,
Expand Down Expand Up @@ -105,8 +99,9 @@ def configuration(parent_package='', top_path=None):
],

configuration=configuration,
setup_requires=SETUP_REQUIRES,
install_requires=INSTALL_REQUIRES,
# install cython when running setup.py (source install)
setup_requires=['cython>=0.21'],
requires=REQUIRES,
packages=setuptools.find_packages(exclude=['doc']),
include_package_data=True,
Expand Down
4 changes: 2 additions & 2 deletions skimage/io/tests/test_pil.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,9 +230,9 @@ class TestSaveTIF:
def roundtrip(self, dtype, x, compress):
with temporary_file(suffix='.tif') as fname:
if dtype == np.bool:
expected = ['low contrast']
expected = ['low contrast|unclosed file']
else:
expected = []
expected = ['unclosed file|\A\Z']
with expected_warnings(expected):
if compress > 0:
imsave(fname, x, compress=compress)
Expand Down
3 changes: 1 addition & 2 deletions tools/appveyor/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@
# wheels are preferred for a given version
numpy==1.8.1
scipy==0.14.0
cython==0.20.2
cython>=0.21
matplotlib==1.4.2
pillow==2.6.1
dask[array]>=0.5.0
wheel
nose