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

pyvips installs in abi mode despite vips being present #84

Closed
s-sajid-ali opened this issue Mar 8, 2019 · 29 comments
Closed

pyvips installs in abi mode despite vips being present #84

s-sajid-ali opened this issue Mar 8, 2019 · 29 comments

Comments

@s-sajid-ali
Copy link

Is there an argument I can pass to pyvips to find a local install of libvips ?

(ipy3) [sajid@xrmlite ~]$ which vips
~/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-rilxe37cjuisabs3kzapoljmdcr7jivc/bin/vips
(ipy3) [sajid@xrmlite ~]$ pip install --user pyvips
Collecting pyvips
Requirement already satisfied: cffi>=1.0.0 in ./miniconda3/envs/ipy3/lib/python3.6/site-packages (from pyvips)
Requirement already satisfied: pycparser in ./miniconda3/envs/ipy3/lib/python3.6/site-packages (from cffi>=1.0.0->pyvips)
Installing collected packages: pyvips
Successfully installed pyvips-2.1.5
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(ipy3) [sajid@xrmlite ~]$ pip show pyvips
Name: pyvips
Version: 2.1.5
Summary: binding for the libvips image processing library, ABI mode
Home-page: https://github.com/libvips/pyvips
Author: John Cupitt
Author-email: jcupitt@gmail.com
License: MIT
Location: /home/sajid/.local/lib/python3.6/site-packages
Requires: cffi
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(ipy3) [sajid@xrmlite ~]$
@jcupitt
Copy link
Member

jcupitt commented Mar 8, 2019 via email

@s-sajid-ali
Copy link
Author

No effect.

(ipy3) [sajid@xrmlite ~]$ which vips
~/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-rilxe37cjuisabs3kzapoljmdcr7jivc/bin/vips
(ipy3) [sajid@xrmlite ~]$ export PKG_CONFIG_PATH=~/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-rilxe37cjuisabs3kzapoljmdcr7jivc
(ipy3) [sajid@xrmlite ~]$ pip install --user pyvips
Collecting pyvips
Requirement already satisfied: cffi>=1.0.0 in ./miniconda3/envs/ipy3/lib/python3.6/site-packages (from pyvips)
Requirement already satisfied: pycparser in ./miniconda3/envs/ipy3/lib/python3.6/site-packages (from cffi>=1.0.0->pyvips)
Installing collected packages: pyvips
Successfully installed pyvips-2.1.5
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(ipy3) [sajid@xrmlite ~]$ pip show pyvips
Name: pyvips
Version: 2.1.5
Summary: binding for the libvips image processing library, ABI mode
Home-page: https://github.com/libvips/pyvips
Author: John Cupitt
Author-email: jcupitt@gmail.com
License: MIT
Location: /home/sajid/.local/lib/python3.6/site-packages
Requires: cffi
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(ipy3) [sajid@xrmlite ~]$

@jcupitt
Copy link
Member

jcupitt commented Mar 8, 2019 via email

@s-sajid-ali
Copy link
Author

Doing that didn't help, but you can see what's the correct way to do it tomorrow. No worries.

@kleisauke
Copy link
Member

You're missing the /lib/pkgconfig suffix, try this:

export PKG_CONFIG_PATH=~/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-rilxe37cjuisabs3kzapoljmdcr7jivc/lib/pkgconfig:$PKG_CONFIG_PATH

Assuming that ~ works in environment variables and that spack places the pkg-config files in that directory.

If that doesn't work, try this:

export PKG_CONFIG_PATH=`spack location --install-dir libvips`/lib/pkgconfig:$PKG_CONFIG_PATH

@s-sajid-ali
Copy link
Author

s-sajid-ali commented Mar 8, 2019

I'm not sure why that's not helping.

Confirm that we have vips with pkgconfig info installed :

(ipy3) [sajid@xrmlite pkgconfig]$ pwd
/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-rilxe37cjuisabs3kzapoljmdcr7jivc/lib/pkgconfig
(ipy3) [sajid@xrmlite pkgconfig]$ ls
vips-cpp.pc  vips.pc

Confirm that we have vips and a working C compiler (and the same version of pkgconfig loaded just to be safe) :

vips-cpp.pc  vips.pc
(ipy3) [sajid@xrmlite pkgconfig]$ module list
Currently Loaded Modulefiles:
  1) git-2.18.0-gcc-4.8.5-5pqe7pa      2) gcc-8.3.0-gcc-4.8.5-wwpinbr       3) libvips-8.7.4-gcc-8.3.0-rilxe37   4) pkgconf-1.5.4-gcc-8.3.0-r7cinay

Now, set the env var as suggested and install :

(ipy3) [sajid@xrmlite pkgconfig]$ export PKG_CONFIG_PATH=/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-rilxe37cjuisabs3kzapoljmdcr7jivc/lib/pkgconfig
(ipy3) [sajid@xrmlite pkgconfig]$ pip install --no-cache-dir pyvips
Collecting pyvips
  Downloading https://files.pythonhosted.org/packages/39/1e/b1df477d78bba37d3b9f83258e9a44bb505355e2e56a82e8398bfe699096/pyvips-2.1.5.tar.gz
Requirement already satisfied: cffi>=1.0.0 in /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages (from pyvips)
Requirement already satisfied: pycparser in /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages (from cffi>=1.0.0->pyvips)
Installing collected packages: pyvips
  Running setup.py install for pyvips ... done
Successfully installed pyvips-2.1.5
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Did it succeed in building an API build ? No.

(ipy3) [sajid@xrmlite pkgconfig]$ pip show pyvips
Name: pyvips
Version: 2.1.5
Summary: binding for the libvips image processing library, ABI mode
Home-page: https://github.com/libvips/pyvips
Author: John Cupitt
Author-email: jcupitt@gmail.com
License: MIT
Location: /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages
Requires: cffi
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(ipy3) [sajid@xrmlite pkgconfig]$

And doing what @kleisauke suggested didn't work either :

(ipy3) [sajid@xrmlite pkgconfig]$ export PKG_CONFIG_PATH=/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-rilxe37cjuisabs3kzapoljmdcr7jivc/lib/pkgconfig:$PKG_CONFIG_PATH
(ipy3) [sajid@xrmlite pkgconfig]$ pip install --no-cache-dir pyvips
Collecting pyvips
  Downloading https://files.pythonhosted.org/packages/39/1e/b1df477d78bba37d3b9f83258e9a44bb505355e2e56a82e8398bfe699096/pyvips-2.1.5.tar.gz
Requirement already satisfied: cffi>=1.0.0 in /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages (from pyvips)
Requirement already satisfied: pycparser in /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages (from cffi>=1.0.0->pyvips)
Installing collected packages: pyvips
  Running setup.py install for pyvips ... done
Successfully installed pyvips-2.1.5
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(ipy3) [sajid@xrmlite pkgconfig]$ pip show pyvips
Name: pyvips
Version: 2.1.5
Summary: binding for the libvips image processing library, ABI mode
Home-page: https://github.com/libvips/pyvips
Author: John Cupitt
Author-email: jcupitt@gmail.com
License: MIT
Location: /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages
Requires: cffi
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(ipy3) [sajid@xrmlite pkgconfig]$

@kleisauke
Copy link
Member

You can check whether libvips is available and whether a sufficient version is installed (after exporting the PKG_CONFIG_PATH environment variable) with:

pkg-config --exists --print-errors "vips >= 8.2" && echo OK

It is also possible that the compilation process of the API mode fails, and as a result, the ABI mode is installed. You can check this with the --verbose flag of pip. For example:

pip install --user pyvips --verbose

This will produce a large amount of output messages, you should look for building '_libvips' extension.

When it successfully compiles the API mode, I see this:

Output
running build_ext
Distribution.get_command_obj(): creating 'build_ext' command object
generating cffi module 'build/temp.linux-x86_64-3.6/_libvips.c'
creating build/temp.linux-x86_64-3.6
building '_libvips' extension
creating build/temp.linux-x86_64-3.6/build
creating build/temp.linux-x86_64-3.6/build/temp.linux-x86_64-3.6
gcc -pthread -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -D_REENTRANT -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libgsf-1 -I/usr/include/ImageMagick-6 -I/usr/include/orc-0.4 -I/usr/include/OpenEXR -I/usr/include/poppler/glib -I/usr/include/cairo -I/usr/include/librsvg-2.0 -I/usr/include/openslide -I/usr/include/cfitsio -I/usr/include/pango-1.0 -I/usr/include/libpng15 -I/usr/include/libxml2 -I/usr/include/libdrm -I/usr/include/poppler -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/uuid -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/python3.6m -c build/temp.linux-x86_64-3.6/_libvips.c -o build/temp.linux-x86_64-3.6/build/temp.linux-x86_64-3.6/_libvips.o
build/temp.linux-x86_64-3.6/_libvips.c: In function ‘_cffi_checkfld__GEnumClass’:
build/temp.linux-x86_64-3.6/_libvips.c:4784:25: warning: initialization from incompatible pointer type [enabled by default]
   { GTypeClass * *tmp = &p->g_type_class; (void)tmp; }
						 ^
build/temp.linux-x86_64-3.6/_libvips.c: In function ‘_cffi_checkfld__GValue’:
build/temp.linux-x86_64-3.6/_libvips.c:4847:25: warning: initialization from incompatible pointer type [enabled by default]
   { uint64_t(*tmp)[2] = &p->data; (void)tmp; }
						 ^
build/temp.linux-x86_64-3.6/_libvips.c: In function ‘_cffi_checkfld__VipsObject’:
build/temp.linux-x86_64-3.6/_libvips.c:4908:19: warning: initialization from incompatible pointer type [enabled by default]
   { void * *tmp = &p->argument_table; (void)tmp; }
				   ^
gcc -pthread -shared -Wl,-z,relro build/temp.linux-x86_64-3.6/build/temp.linux-x86_64-3.6/_libvips.o -L/usr/lib64 -lvips -lgobject-2.0 -lglib-2.0 -lpython3.6m -o build/lib.linux-x86_64-3.6/_libvips.abi3.so
running install_lib

@jcupitt
Copy link
Member

jcupitt commented Mar 9, 2019

I usually do this to test pkg-config:

$ pkg-config vips --libs
-L/home/john/vips/lib -lvips -lgobject-2.0 -lglib-2.0

So you can see it'll link to the vips in my home area.

@jcupitt
Copy link
Member

jcupitt commented Mar 9, 2019

And I have:

$ echo $PKG_CONFIG_PATH 
/home/john/vips/lib/pkgconfig

@s-sajid-ali
Copy link
Author

Confirm that I have vips>8.2 :

(ipy3) [sajid@xrmlite ~]$ pkg-config --exists --print-errors "vips >= 8.2" && echo OK
OK

Confirm that the other libraries needed by pyvips are loaded :

(ipy3) [sajid@xrmlite ~]$ module list
Currently Loaded Modulefiles:
  1) git-2.18.0-gcc-4.8.5-5pqe7pa                     4) pkgconf-1.5.4-gcc-8.3.0-r7cinay
  2) gcc-8.3.0-gcc-4.8.5-wwpinbr                      5) glib-2.56.3-gcc-8.3.0-h6zmhwo
  3) libvips-8.7.4-gcc-8.3.0-rilxe37                  6) gobject-introspection-1.56.1-gcc-8.3.0-k3bulus

Since these libraries are loaded via modules, the PKG_CONFIG_PATH should be set automatically. Let's confirm that :

(ipy3) [sajid@xrmlite ~]$ echo $PKG_CONFIG_PATH
/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/gobject-introspection-1.56.1-k3bulus2aliwd4futzfor22nuwe4tqch/lib/pkgconfig:/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/glib-2.56.3-h6zmhwoaxadgvfqigafjp7hhsijqse5y/lib/pkgconfig:/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/pkgconf-1.5.4-r7cinayuqgrpntwbafpygkzl6t3obdur/lib/pkgconfig:/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-rilxe37cjuisabs3kzapoljmdcr7jivc/lib/pkgconfig

Now uninstall the previous pyvips :

(ipy3) [sajid@xrmlite ~]$ pip uninstall pyvips
Uninstalling pyvips-2.1.5:
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips-2.1.5-py3.6.egg-info
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__init__.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/__init__.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/base.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/decls.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/enums.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/error.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/gobject.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/gvalue.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/pyvips_build.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/version.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/vimage.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/vinterpolate.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/vobject.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/__pycache__/voperation.cpython-36.pyc
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/base.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/decls.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/enums.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/error.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/gobject.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/gvalue.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/pyvips_build.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/version.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/vimage.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/vinterpolate.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/vobject.py
  /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips/voperation.py
Proceed (y/n)? y
  Successfully uninstalled pyvips-2.1.5
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.   

Now install it again with the verbose flag :

(ipy3) [sajid@xrmlite ~]$ pip install --user pyvips --verbose
Collecting pyvips
  1 location(s) to search for versions of pyvips:
  * https://pypi.python.org/simple/pyvips/
  Getting page https://pypi.python.org/simple/pyvips/
  Looking up "https://pypi.python.org/simple/pyvips/" in the cache
  Returning cached "301 Moved Permanently" response (ignoring date and etag information)
  Looking up "https://pypi.org/simple/pyvips/" in the cache
  Current age based on date: 243519
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  Starting new HTTPS connection (1): pypi.org
  "GET /simple/pyvips/ HTTP/1.1" 304 0
  Analyzing links from page https://pypi.org/simple/pyvips/
    Found link https://files.pythonhosted.org/packages/6a/2d/5ca1ee5077f733335c208b7a3f3d62f964aaab87731ab3e2850e404df7f1/pyvips-2.0.0-py2.py3-none-any.whl#sha256=c99590364cfc620af0db004aa9c6e6830a3c337d0db074d0a61da74dd4b91071 (from https://pypi.org/simple/pyvips/), version: 2.0.0
    Found link https://files.pythonhosted.org/packages/40/99/2d9991eff005de6674f155808423e8aac934ba50b5c8858abef5e148c51f/pyvips-2.0.1-py2.py3-none-any.whl#sha256=bf74b25a91bed8d9a96be8d457ce26ee487bf8b72c48f2c56aa643e233e341b2 (from https://pypi.org/simple/pyvips/), version: 2.0.1
    Found link https://files.pythonhosted.org/packages/b6/3a/261808544f6832f6e00b6ee26435210d6293cc022b9c51e2b48543575dc5/pyvips-2.0.2-py2.py3-none-any.whl#sha256=e6a6541672c6eab62ab8442738742b021c624a7b51b49c1ba9ab9aa99935692f (from https://pypi.org/simple/pyvips/), version: 2.0.2
    Found link https://files.pythonhosted.org/packages/62/32/bd01d86b81fdd84c0699cda1c40b0334f63e4deb981d22f468b3ef681513/pyvips-2.0.3-py2.py3-none-any.whl#sha256=0939c390af4584d2a48d488630f0f249d234e6087b188f7e8a70418479b66488 (from https://pypi.org/simple/pyvips/), version: 2.0.3
    Found link https://files.pythonhosted.org/packages/47/1f/a646ed24baab8404d7ce485e088bd58ec2ec4e9108089dffa6acf42b6347/pyvips-2.0.4-py2.py3-none-any.whl#sha256=f1b502e20d3b12abf295a2eb57387061b3285b6f93a228a1c0beada01a2e435d (from https://pypi.org/simple/pyvips/), version: 2.0.4
    Found link https://files.pythonhosted.org/packages/17/08/9314ee0082c56aeac9dbbc23f5948e1e884ac9679cf6032197d5be34fa56/pyvips-2.0.5-py2.py3-none-any.whl#sha256=684a459452b1b1968c7c8dbd636cdb669f780e9927291dc469a25c751e9337be (from https://pypi.org/simple/pyvips/), version: 2.0.5
    Found link https://files.pythonhosted.org/packages/b5/74/5c963d0dcc76fb467902e18aab55500158f5c9acdc86235061a878c16376/pyvips-2.1.0-py2.py3-none-any.whl#sha256=eec805bba1de3bcaedf855a5696c85ca550896785e1fdf96ef7021248850b618 (from https://pypi.org/simple/pyvips/), version: 2.1.0
    Found link https://files.pythonhosted.org/packages/a0/32/f819aa0de7394b4d714fece744bde53ee82df5e545e4c5affb17563bdfcd/pyvips-2.1.0.tar.gz#sha256=4196e80ef03ca7efff21f00866e1302c5e90d45a8d9d87f3e5b122a1ba04ced2 (from https://pypi.org/simple/pyvips/), version: 2.1.0
    Found link https://files.pythonhosted.org/packages/c2/42/dbb88d6049ec0cdd5aa62070019d50a9381cb390dd5e68ab3c062b0a5260/pyvips-2.1.1.tar.gz#sha256=034210a7bfdbe574e07f71c96ca8cca3cc6072a5460032dad2794d8e75bd43dc (from https://pypi.org/simple/pyvips/), version: 2.1.1
    Found link https://files.pythonhosted.org/packages/5c/6e/df4a34a9c8b349e40d6400bd4ac40558b3497732795fa0399596155b18b1/pyvips-2.1.2.tar.gz#sha256=c9de58aa073194e85ea0b8e90cb6b6a22905293c5c53d030424bec40dbe281ad (from https://pypi.org/simple/pyvips/), version: 2.1.2
    Found link https://files.pythonhosted.org/packages/60/fb/820d471aa27cea5c11e752579cf11308adcfbd18558f509e7a7a5d7f229b/pyvips-2.1.3.tar.gz#sha256=223bb78753866c604a9918d89b53b5dd7b6102c5302c6672f0c4cb047c4c15f2 (from https://pypi.org/simple/pyvips/), version: 2.1.3
    Found link https://files.pythonhosted.org/packages/b3/55/abb37dfddb4907b00b0e55b85cda090aa0704f9a587d62b925b0238e898c/pyvips-2.1.4.tar.gz#sha256=4fb56ab9f30baa1d1103e488e368e60387a936dc9682b2456327bbfa2dc00a55 (from https://pypi.org/simple/pyvips/), version: 2.1.4
    Found link https://files.pythonhosted.org/packages/39/1e/b1df477d78bba37d3b9f83258e9a44bb505355e2e56a82e8398bfe699096/pyvips-2.1.5.tar.gz#sha256=42dfbf14f19374bef7db89f3943758deec3dc055c026ff9ae5fbd09a7cb1c0e3 (from https://pypi.org/simple/pyvips/), version: 2.1.5
  Using version 2.1.5 (newest of versions: 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.1.4, 2.1.5)
  Using cached wheel link: file:///home/sajid/.cache/pip/wheels/f2/6f/17/d9ffd381fb595e7ad94028093c0ff706da9c8a8608626e1b20/pyvips-2.1.5-py2.py3-none-any.whl
Requirement already satisfied: cffi>=1.0.0 in ./miniconda3/envs/ipy3/lib/python3.6/site-packages (from pyvips)
Requirement already satisfied: pycparser in ./miniconda3/envs/ipy3/lib/python3.6/site-packages (from cffi>=1.0.0->pyvips)
Installing collected packages: pyvips

Successfully installed pyvips-2.1.5
Cleaning up...
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(ipy3) [sajid@xrmlite ~]$ 

Still in ABI mode :(

(ipy3) [sajid@xrmlite ~]$ pip show pyvips
Name: pyvips
Version: 2.1.5
Summary: binding for the libvips image processing library, ABI mode
Home-page: https://github.com/libvips/pyvips
Author: John Cupitt
Author-email: jcupitt@gmail.com
License: MIT
Location: /home/sajid/.local/lib/python3.6/site-packages
Requires: cffi
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(ipy3) [sajid@xrmlite ~]$ 

@jcupitt
Copy link
Member

jcupitt commented Mar 11, 2019

Oh, are you using anaconda? They have their own package system, you can't use regular system binaries with it.

Someone needs to make a special conda package. There have been a few attempts, but I'm not sure it's been done yet.

@kleisauke
Copy link
Member

I tried on Miniconda (on my CentOS server) and it seems to work:

Output
[root@gra ~]# conda info

     active environment : None
            shell level : 0
       user config file : /root/.condarc
 populated config files : /root/.condarc
          conda version : 4.5.12
    conda-build version : not installed
         python version : 3.7.1.final.0
       base environment : /root/miniconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/linux-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/pro/linux-64
                          https://repo.anaconda.com/pkgs/pro/noarch
          package cache : /root/miniconda3/pkgs
                          /root/.conda/pkgs
       envs directories : /home/envs
                          /root/miniconda3/envs
                          /root/.conda/envs
               platform : linux-64
             user-agent : conda/4.5.12 requests/2.21.0 CPython/3.7.1 Linux/4.14.63-xxxx-std-ipv6-64 centos/7 glibc/2.17
                UID:GID : 0:0
             netrc file : None
           offline mode : False

[root@gra ~]# conda create -n py3k python=3
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.5.12
  latest version: 4.6.8

Please update conda by running

    $ conda update -n base -c defaults conda



## Package Plan ##

  environment location: /home/envs/py3k

  added / updated specs:
    - python=3


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    libedit-3.1.20181209       |       hc058e9b_0         188 KB
    ca-certificates-2019.1.23  |                0         126 KB
    wheel-0.33.1               |           py37_0          39 KB
    certifi-2019.3.9           |           py37_0         155 KB
    setuptools-40.8.0          |           py37_0         643 KB
    python-3.7.2               |       h0371630_0        36.4 MB
    openssl-1.1.1b             |       h7b6447c_1         4.0 MB
    pip-19.0.3                 |           py37_0         1.8 MB
    ------------------------------------------------------------
                                           Total:        43.3 MB

The following NEW packages will be INSTALLED:

    ca-certificates: 2019.1.23-0
    certifi:         2019.3.9-py37_0
    libedit:         3.1.20181209-hc058e9b_0
    libffi:          3.2.1-hd88cf55_4
    libgcc-ng:       8.2.0-hdf63c60_1
    libstdcxx-ng:    8.2.0-hdf63c60_1
    ncurses:         6.1-he6710b0_1
    openssl:         1.1.1b-h7b6447c_1
    pip:             19.0.3-py37_0
    python:          3.7.2-h0371630_0
    readline:        7.0-h7b6447c_5
    setuptools:      40.8.0-py37_0
    sqlite:          3.26.0-h7b6447c_0
    tk:              8.6.8-hbc83047_0
    wheel:           0.33.1-py37_0
    xz:              5.2.4-h14c3975_4
    zlib:            1.2.11-h7b6447c_3

Proceed ([y]/n)? y


Downloading and Extracting Packages
libedit-3.1.20181209 | 188 KB    | ################################################################################################################################################################################################## | 100%
ca-certificates-2019 | 126 KB    | ################################################################################################################################################################################################## | 100%
wheel-0.33.1         | 39 KB     | ################################################################################################################################################################################################## | 100%
certifi-2019.3.9     | 155 KB    | ################################################################################################################################################################################################## | 100%
setuptools-40.8.0    | 643 KB    | ################################################################################################################################################################################################## | 100%
python-3.7.2         | 36.4 MB   | ################################################################################################################################################################################################## | 100%
openssl-1.1.1b       | 4.0 MB    | ################################################################################################################################################################################################## | 100%
pip-19.0.3           | 1.8 MB    | ################################################################################################################################################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate py3k
#
# To deactivate an active environment, use
#
#     $ conda deactivate

[root@gra ~]# conda activate py3k
(ipy3) [root@gra ~]# echo $PKG_CONFIG_PATH
:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig
(ipy3) [root@gra envs]# pkg-config vips --libs
-lvips -lgobject-2.0 -lglib-2.0
(py3k) [root@gra ~]# pip install --no-cache-dir pyvips
Collecting pyvips
  Downloading https://files.pythonhosted.org/packages/39/1e/b1df477d78bba37d3b9f83258e9a44bb505355e2e56a82e8398bfe699096/pyvips-2.1.5.tar.gz
Collecting cffi>=1.0.0 (from pyvips)
  Downloading https://files.pythonhosted.org/packages/a7/3f/2667a1516d935938245bd256b56a2f96d739ac3683e6778380f06c6e4c79/cffi-1.12.2-cp37-cp37m-manylinux1_x86_64.whl (430kB)
    100% |████████████████████████████████| 440kB 14.2MB/s
Collecting pkgconfig (from pyvips)
  Downloading https://files.pythonhosted.org/packages/e1/8a/c205fad800317a59e8d218981a8a7a3a00ec69c7fd55eca58dd08e6b0a18/pkgconfig-1.4.0-py2.py3-none-any.whl
Collecting pycparser (from cffi>=1.0.0->pyvips)
  Downloading https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz (158kB)
    100% |████████████████████████████████| 163kB 12.4MB/s
Installing collected packages: pycparser, cffi, pkgconfig, pyvips
  Running setup.py install for pycparser ... done
  Running setup.py install for pyvips ... done
Successfully installed cffi-1.12.2 pkgconfig-1.4.0 pycparser-2.19 pyvips-2.1.5
(py3k) [root@gra ~]# pip show pyvips
Name: pyvips
Version: 2.1.5
Summary: binding for the libvips image processing library, API mode
Home-page: https://github.com/libvips/pyvips
Author: John Cupitt
Author-email: jcupitt@gmail.com
License: MIT
Location: /home/envs/py3k/lib/python3.7/site-packages
Requires: cffi, pkgconfig
Required-by:
(py3k) [root@gra ~]# conda deactivate
[root@gra ~]#
 

The only difference here is that I compiled libvips without using spack and that I didn't use the Intel distribution for Python (assuming that ipy3 = Intel Python 3). I'll try the Miniconda / spack / Intel Python combination tomorrow.

@s-sajid-ali
Copy link
Author

s-sajid-ali commented Mar 11, 2019

If pkg-config knows where to look for vips, then should it matter if vips was installed one way or the other ?

I'm using an older pip version, don't know if that's changing something.

clone from git, check that all modules are present:

(ipy3) [sajid@xrmlite packages]$ git clone https://github.com/libvips/pyvips
Cloning into 'pyvips'...
remote: Enumerating objects: 41, done.
remote: Counting objects: 100% (41/41), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 2195 (delta 18), reused 28 (delta 14), pack-reused 2154
Receiving objects: 100% (2195/2195), 18.72 MiB | 14.53 MiB/s, done.
Resolving deltas: 100% (1503/1503), done.
(ipy3) [sajid@xrmlite packages]$ cd pyvips/
(ipy3) [sajid@xrmlite pyvips]$ module list
Currently Loaded Modulefiles:
  1) git-2.18.0-gcc-4.8.5-5pqe7pa                     4) glib-2.56.3-gcc-8.3.0-h6zmhwo
  2) gcc-8.3.0-gcc-4.8.5-wwpinbr                      5) gobject-introspection-1.56.1-gcc-8.3.0-k3bulus
  3) pkgconf-1.5.4-gcc-8.3.0-r7cinay                  6) libvips-8.7.4-gcc-8.3.0-rilxe37

build from source :

(ipy3) [sajid@xrmlite pyvips]$ pip install . --user --no-cache-dir --verbose
Processing /home/sajid/packages/pyvips
  Running setup.py (path:/tmp/pip-la61k7zv-build/setup.py) egg_info for package from file:///home/sajid/packages/pyvips
    Running command python setup.py egg_info
    zip_safe flag not set; analyzing archive contents...
    Installed /tmp/pip-la61k7zv-build/.eggs/pkgconfig-1.4.0-py3.6.egg
    Searching for pytest-runner
    Reading https://pypi.python.org/simple/pytest-runner/
    Downloading https://files.pythonhosted.org/packages/15/0a/1e73c3a3d3f4f5faf5eacac4e55675c1627b15d84265b80b8fef3f8a3fb5/pytest-runner-4.4.tar.gz#sha256=00ad6cd754ce55b01b868a6d00b77161e4d2006b3918bde882376a0a884d0df4
    Best match: pytest-runner 4.4
    Processing pytest-runner-4.4.tar.gz
    Writing /tmp/easy_install-6lptyf75/pytest-runner-4.4/setup.cfg
    Running pytest-runner-4.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-6lptyf75/pytest-runner-4.4/egg-dist-tmp-evdc4fyt
    zip_safe flag not set; analyzing archive contents...
    Moving pytest_runner-4.4-py3.6.egg to /tmp/pip-la61k7zv-build/.eggs
    Installed /tmp/pip-la61k7zv-build/.eggs/pytest_runner-4.4-py3.6.egg
    running egg_info
    creating pip-egg-info/pyvips.egg-info
    writing pip-egg-info/pyvips.egg-info/PKG-INFO
    writing dependency_links to pip-egg-info/pyvips.egg-info/dependency_links.txt
    writing requirements to pip-egg-info/pyvips.egg-info/requires.txt
    writing top-level names to pip-egg-info/pyvips.egg-info/top_level.txt
    writing manifest file 'pip-egg-info/pyvips.egg-info/SOURCES.txt'
    warning: manifest_maker: standard file '-c' not found
    reading manifest file 'pip-egg-info/pyvips.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'pip-egg-info/pyvips.egg-info/SOURCES.txt'
  Source in /tmp/pip-la61k7zv-build has version 2.1.6, which satisfies requirement pyvips==2.1.6 from file:///home/sajid/packages/pyvips
Requirement already satisfied: cffi>=1.0.0 in /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages (from pyvips==2.1.6)
Requirement already satisfied: pycparser in /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages (from cffi>=1.0.0->pyvips==2.1.6)
Installing collected packages: pyvips
  Running setup.py install for pyvips ...     Running command /home/sajid/miniconda3/envs/ipy3/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-la61k7zv-build/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-01t32j5u-record/install-record.txt --single-version-externally-managed --compile --user --prefix=
    running install
    running build
    running build_py
    creating build
    creating build/lib
    creating build/lib/pyvips
    copying pyvips/__init__.py -> build/lib/pyvips
    copying pyvips/base.py -> build/lib/pyvips
    copying pyvips/decls.py -> build/lib/pyvips
    copying pyvips/enums.py -> build/lib/pyvips
    copying pyvips/error.py -> build/lib/pyvips
    copying pyvips/gobject.py -> build/lib/pyvips
    copying pyvips/gvalue.py -> build/lib/pyvips
    copying pyvips/pyvips_build.py -> build/lib/pyvips
    copying pyvips/version.py -> build/lib/pyvips
    copying pyvips/vimage.py -> build/lib/pyvips
    copying pyvips/vinterpolate.py -> build/lib/pyvips
    copying pyvips/vobject.py -> build/lib/pyvips
    copying pyvips/voperation.py -> build/lib/pyvips
    running install_lib
    creating /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/__init__.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/base.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/decls.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/enums.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/error.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/gobject.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/gvalue.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/pyvips_build.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/version.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/vimage.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/vinterpolate.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/vobject.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    copying build/lib/pyvips/voperation.py -> /home/sajid/.local/lib/python3.6/site-packages/pyvips
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/__init__.py to __init__.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/base.py to base.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/decls.py to decls.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/enums.py to enums.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/error.py to error.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/gobject.py to gobject.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/gvalue.py to gvalue.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/pyvips_build.py to pyvips_build.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/version.py to version.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/vimage.py to vimage.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/vinterpolate.py to vinterpolate.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/vobject.py to vobject.cpython-36.pyc
    byte-compiling /home/sajid/.local/lib/python3.6/site-packages/pyvips/voperation.py to voperation.cpython-36.pyc
    running install_egg_info
    running egg_info
    creating pyvips.egg-info
    writing pyvips.egg-info/PKG-INFO
    writing dependency_links to pyvips.egg-info/dependency_links.txt
    writing requirements to pyvips.egg-info/requires.txt
    writing top-level names to pyvips.egg-info/top_level.txt
    writing manifest file 'pyvips.egg-info/SOURCES.txt'
    warning: manifest_maker: standard file '-c' not found
    reading manifest file 'pyvips.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'pyvips.egg-info/SOURCES.txt'
    Copying pyvips.egg-info to /home/sajid/.local/lib/python3.6/site-packages/pyvips-2.1.6-py3.6.egg-info
    running install_scripts
    writing list of installed files to '/tmp/pip-01t32j5u-record/install-record.txt'
done
  Removing source in /tmp/pip-la61k7zv-build
Successfully installed pyvips-2.1.6
Cleaning up...
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Since there was no build_ext, it makes sense that this build is an ABI build.
What I don't see in the above is a build_ext phase. How is that completely missing ?

@kleisauke
Copy link
Member

You could try instructing distutils to build the extension (if you have cloned pyvips):

python setup.py build_ext --inplace

It will just ouput running build_ext if pyvips can not find libvips (because of an empty PKG_CONFIG_PATH, for example):

Output
(py3k) [root@gra pyvips]# export PKG_CONFIG_PATH=""
(py3k) [root@gra pyvips]# python setup.py build_ext --inplace
running build_ext
(py3k) [root@gra pyvips]# export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig
(py3k) [root@gra pyvips]# python setup.py build_ext --inplace
running build_ext
generating cffi module 'build/temp.linux-x86_64-3.7/_libvips.c'
creating build
creating build/temp.linux-x86_64-3.7
building '_libvips' extension
creating build/temp.linux-x86_64-3.7/build
creating build/temp.linux-x86_64-3.7/build/temp.linux-x86_64-3.7
gcc -pthread -B /home/envs/py3k/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -D_REENTRANT -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libgsf-1 -I/usr/include/ImageMagick-6 -I/usr/include/orc-0.4 -I/usr/include/OpenEXR -I/usr/include/poppler/glib -I/usr/include/cairo -I/usr/include/librsvg-2.0 -I/usr/include/openslide -I/usr/include/cfitsio -I/usr/include/pango-1.0 -I/usr/include/libpng15 -I/usr/include/libxml2 -I/usr/include/libdrm -I/usr/include/poppler -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/uuid -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/harfbuzz -I/usr/include/fribidi -I/home/envs/py3k/include/python3.7m -c build/temp.linux-x86_64-3.7/_libvips.c -o build/temp.linux-x86_64-3.7/build/temp.linux-x86_64-3.7/_libvips.o
build/temp.linux-x86_64-3.7/_libvips.c: In function ‘_cffi_d_vips_foreign_get_suffixes’:
build/temp.linux-x86_64-3.7/_libvips.c:2746:3: warning: implicit declaration of function ‘vips_foreign_get_suffixes’ [-Wimplicit-function-declaration]
   return vips_foreign_get_suffixes();
   ^
build/temp.linux-x86_64-3.7/_libvips.c:2746:3: warning: return makes pointer from integer without a cast [enabled by default]
build/temp.linux-x86_64-3.7/_libvips.c: In function ‘_cffi_f_vips_foreign_get_suffixes’:
build/temp.linux-x86_64-3.7/_libvips.c:2756:12: warning: assignment makes pointer from integer without a cast [enabled by default]
   { result = vips_foreign_get_suffixes(); }
            ^
build/temp.linux-x86_64-3.7/_libvips.c: In function ‘_cffi_checkfld__GEnumClass’:
build/temp.linux-x86_64-3.7/_libvips.c:4910:25: warning: initialization from incompatible pointer type [enabled by default]
   { GTypeClass * *tmp = &p->g_type_class; (void)tmp; }
                         ^
build/temp.linux-x86_64-3.7/_libvips.c: In function ‘_cffi_checkfld__GValue’:
build/temp.linux-x86_64-3.7/_libvips.c:4973:25: warning: initialization from incompatible pointer type [enabled by default]
   { uint64_t(*tmp)[2] = &p->data; (void)tmp; }
                         ^
build/temp.linux-x86_64-3.7/_libvips.c: In function ‘_cffi_checkfld__VipsObject’:
build/temp.linux-x86_64-3.7/_libvips.c:5034:19: warning: initialization from incompatible pointer type [enabled by default]
   { void * *tmp = &p->argument_table; (void)tmp; }
                   ^
creating build/lib.linux-x86_64-3.7
gcc -pthread -shared -B /home/envs/py3k/compiler_compat -L/home/envs/py3k/lib -Wl,-rpath=/home/envs/py3k/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.7/build/temp.linux-x86_64-3.7/_libvips.o -lvips -lgobject-2.0 -lglib-2.0 -o build/lib.linux-x86_64-3.7/_libvips.abi3.so
copying build/lib.linux-x86_64-3.7/_libvips.abi3.so ->
 

You can also try this test program:

import pkgconfig

# we must have the vips package to be able to do anything
if not pkgconfig.exists('vips'): 
    raise Exception('unable to find pkg-config package "vips"')
if pkgconfig.installed('vips', '< 8.2'):
    raise Exception('pkg-config "vips" is too old -- need libvips 8.2 or later')

This will check if the Python module for the pkg-config command line tool can find libvips (pyvips is doing the same).

It will throw errors when it can not find libvips, for example:

Output
(py3k) [root@gra pyvips]# cat << 'EOF' > test.py
> import pkgconfig
>
> # we must have the vips package to be able to do anything
> if not pkgconfig.exists('vips'):
>     raise Exception('unable to find pkg-config package "vips"')
> if pkgconfig.installed('vips', '< 8.2'):
>     raise Exception('pkg-config "vips" is too old -- need libvips 8.2 or later')
> EOF
(py3k) [root@gra pyvips]# export PKG_CONFIG_PATH=""
(py3k) [root@gra pyvips]# python test.py && echo OK
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    raise Exception('unable to find pkg-config package "vips"')
Exception: unable to find pkg-config package "vips"
(py3k) [root@gra pyvips]# export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig
(py3k) [root@gra pyvips]# python test.py && echo OK
OK

@s-sajid-ali
Copy link
Author

s-sajid-ali commented Mar 12, 2019

Still no change.

Check build deps
(ipy3) [sajid@xrmlite pyvips]$ module list
Currently Loaded Modulefiles:
 1) git-2.18.0-gcc-4.8.5-5pqe7pa                     3) libvips-8.7.4-gcc-8.3.0-rilxe37                  5) glib-2.56.3-gcc-8.3.0-h6zmhwo
 2) gcc-8.3.0-gcc-4.8.5-wwpinbr                      4) pkgconf-1.5.4-gcc-8.3.0-r7cinay                  6) gobject-introspection-1.56.1-gcc-8.3.0-k3bulus
(ipy3) [sajid@xrmlite pyvips]$ ipython
Python 3.6.3 |Intel Corporation| (default, May  4 2018, 04:22:28)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.3.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import pkgconfig

In [2]: if not pkgconfig.exists('vips'):
  ...:         raise Exception('unable to find pkg-config package "vips"')
  ...:

In [3]: if pkgconfig.installed('vips', '< 8.2'):
  ...:         raise Exception('pkg-config "vips" is too old -- need libvips 8.2 or later')
  ...:

In [4]:

In [4]:
Do you really want to exit ([y]/n)? y
Build
(ipy3) [sajid@xrmlite pyvips]$ python setup.py build_ext --inplace --verbose                                                             
running build_ext                                                                                                                        
(ipy3) [sajid@xrmlite pyvips]$ python setup.py install --verbose                                                                         
running install                                                                                                                          
running bdist_egg                                                                                                                        
running egg_info                                                                                                                         
writing pyvips.egg-info/PKG-INFO                                                                                                         
writing dependency_links to pyvips.egg-info/dependency_links.txt                                                                         
writing requirements to pyvips.egg-info/requires.txt                                                                                     
writing top-level names to pyvips.egg-info/top_level.txt                                                                                 
reading manifest file 'pyvips.egg-info/SOURCES.txt'                                                                                      
reading manifest template 'MANIFEST.in'                                                                                                  
writing manifest file 'pyvips.egg-info/SOURCES.txt'                                                                                      
installing library code to build/bdist.linux-x86_64/egg                                                                                  
running install_lib                                                                                                                      
running build_py                                                                                                                         
creating build/bdist.linux-x86_64/egg                                                                                                    
creating build/bdist.linux-x86_64/egg/pyvips                                                                                             
copying build/lib/pyvips/__init__.py -> build/bdist.linux-x86_64/egg/pyvips                                                              
copying build/lib/pyvips/base.py -> build/bdist.linux-x86_64/egg/pyvips                                                                  
copying build/lib/pyvips/decls.py -> build/bdist.linux-x86_64/egg/pyvips                                                                 
copying build/lib/pyvips/enums.py -> build/bdist.linux-x86_64/egg/pyvips                                                                 
copying build/lib/pyvips/error.py -> build/bdist.linux-x86_64/egg/pyvips                                                                 
copying build/lib/pyvips/gobject.py -> build/bdist.linux-x86_64/egg/pyvips                                                               
copying build/lib/pyvips/gvalue.py -> build/bdist.linux-x86_64/egg/pyvips                                                                
copying build/lib/pyvips/pyvips_build.py -> build/bdist.linux-x86_64/egg/pyvips                                                          
copying build/lib/pyvips/version.py -> build/bdist.linux-x86_64/egg/pyvips                                                               
copying build/lib/pyvips/vimage.py -> build/bdist.linux-x86_64/egg/pyvips                                                                
copying build/lib/pyvips/vinterpolate.py -> build/bdist.linux-x86_64/egg/pyvips                                                          
copying build/lib/pyvips/vobject.py -> build/bdist.linux-x86_64/egg/pyvips                                                               
copying build/lib/pyvips/voperation.py -> build/bdist.linux-x86_64/egg/pyvips                                                            
byte-compiling build/bdist.linux-x86_64/egg/pyvips/__init__.py to __init__.cpython-36.pyc                                                
byte-compiling build/bdist.linux-x86_64/egg/pyvips/base.py to base.cpython-36.pyc                                                        
byte-compiling build/bdist.linux-x86_64/egg/pyvips/decls.py to decls.cpython-36.pyc                                                      
byte-compiling build/bdist.linux-x86_64/egg/pyvips/enums.py to enums.cpython-36.pyc                                                      
byte-compiling build/bdist.linux-x86_64/egg/pyvips/error.py to error.cpython-36.pyc                                                      
byte-compiling build/bdist.linux-x86_64/egg/pyvips/gobject.py to gobject.cpython-36.pyc                                                  
byte-compiling build/bdist.linux-x86_64/egg/pyvips/gvalue.py to gvalue.cpython-36.pyc                                                    
byte-compiling build/bdist.linux-x86_64/egg/pyvips/pyvips_build.py to pyvips_build.cpython-36.pyc                                        
byte-compiling build/bdist.linux-x86_64/egg/pyvips/version.py to version.cpython-36.pyc                                                  
byte-compiling build/bdist.linux-x86_64/egg/pyvips/vimage.py to vimage.cpython-36.pyc                                                    
byte-compiling build/bdist.linux-x86_64/egg/pyvips/vinterpolate.py to vinterpolate.cpython-36.pyc                                        
byte-compiling build/bdist.linux-x86_64/egg/pyvips/vobject.py to vobject.cpython-36.pyc                                                  
byte-compiling build/bdist.linux-x86_64/egg/pyvips/voperation.py to voperation.cpython-36.pyc                                            
creating build/bdist.linux-x86_64/egg/EGG-INFO                                                                                           
copying pyvips.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO                                                                
copying pyvips.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO                                                             
copying pyvips.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO                                                    
copying pyvips.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO                                                            
copying pyvips.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO                                                           
zip_safe flag not set; analyzing archive contents...                                                                                     
creating 'dist/pyvips-2.1.6-py3.6.egg' and adding 'build/bdist.linux-x86_64/egg' to it                                                   
removing 'build/bdist.linux-x86_64/egg' (and everything under it)                                                                        
Processing pyvips-2.1.6-py3.6.egg                                                                                                        
Copying pyvips-2.1.6-py3.6.egg to /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages                                           
Adding pyvips 2.1.6 to easy-install.pth file                                                                                             
                                                                                                                                        
Installed /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips-2.1.6-py3.6.egg                                            
Processing dependencies for pyvips==2.1.6                                                                                                
Searching for cffi==1.12.2                                                                                                               
Best match: cffi 1.12.2                                                                                                                  
Adding cffi 1.12.2 to easy-install.pth file                                                                                              
                                                                                                                                        
Using /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages                                                                       
Searching for pycparser==2.19                                                                                                            
Best match: pycparser 2.19                                                                                                               
Adding pycparser 2.19 to easy-install.pth file                                                                                           
                                                                                                                                        
Using /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages                                                                       
Finished processing dependencies for pyvips==2.1.6                                                                                       
Did we succeed ?
(ipy3) [sajid@xrmlite pyvips]$ pip show pyvips
Name: pyvips
Version: 2.1.6
Summary: binding for the libvips image processing library, ABI mode
Home-page: https://github.com/libvips/pyvips
Author: John Cupitt
Author-email: jcupitt@gmail.com
License: MIT
Location: /home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/pyvips-2.1.6-py3.6.egg
Requires: cffi
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
No :(

@kleisauke
Copy link
Member

It seems that it is not a pkg-config problem, thanks for the confirmation.

The API mode requires a working C compiler plus all libvips headers. We could check if the C compiler is working by executing pyvips/pyvips_build.py. For example:

Output
(py3k) [root@gra ~]# git clone https://github.com/libvips/pyvips.git
Cloning into 'pyvips'...
remote: Enumerating objects: 41, done.
remote: Counting objects: 100% (41/41), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 2195 (delta 18), reused 28 (delta 14), pack-reused 2154
Receiving objects: 100% (2195/2195), 18.72 MiB | 8.80 MiB/s, done.
Resolving deltas: 100% (1503/1503), done.
(py3k) [root@gra ~]# cd pyvips/pyvips/
(py3k) [root@gra pyvips]# export CC=""
(py3k) [root@gra pyvips]# python pyvips_build.py
generating ./_libvips.c
the current directory is '/root/pyvips/pyvips'
running build_ext
building '_libvips' extension
-Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -D_REENTRANT -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libgsf-1 -I/usr/include/ImageMagick-6 -I/usr/include/orc-0.4 -I/usr/include/OpenEXR -I/usr/include/poppler/glib -I/usr/include/cairo -I/usr/include/librsvg-2.0 -I/usr/include/openslide -I/usr/include/cfitsio -I/usr/include/pango-1.0 -I/usr/include/libpng15 -I/usr/include/libxml2 -I/usr/include/libdrm -I/usr/include/poppler -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/uuid -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/harfbuzz -I/usr/include/fribidi -I/home/envs/py3k/include/python3.7m -c _libvips.c -o ./_libvips.o
unable to execute '-Wsign-compare': No such file or directory
Traceback (most recent call last):
  File "/home/envs/py3k/lib/python3.7/distutils/unixccompiler.py", line 118, in _compile
    extra_postargs)
  File "/home/envs/py3k/lib/python3.7/distutils/ccompiler.py", line 909, in spawn
    spawn(cmd, dry_run=self.dry_run)
  File "/home/envs/py3k/lib/python3.7/distutils/spawn.py", line 36, in spawn
    _spawn_posix(cmd, search_path, dry_run=dry_run)
  File "/home/envs/py3k/lib/python3.7/distutils/spawn.py", line 159, in _spawn_posix
    % (cmd, exit_status))
distutils.errors.DistutilsExecError: command '-Wsign-compare' failed with exit status 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/envs/py3k/lib/python3.7/site-packages/cffi/ffiplatform.py", line 51, in _build
    dist.run_command('build_ext')
  File "/home/envs/py3k/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/home/envs/py3k/lib/python3.7/distutils/command/build_ext.py", line 339, in run
    self.build_extensions()
  File "/home/envs/py3k/lib/python3.7/distutils/command/build_ext.py", line 448, in build_extensions
    self._build_extensions_serial()
  File "/home/envs/py3k/lib/python3.7/distutils/command/build_ext.py", line 473, in _build_extensions_serial
    self.build_extension(ext)
  File "/home/envs/py3k/lib/python3.7/distutils/command/build_ext.py", line 533, in build_extension
    depends=ext.depends)
  File "/home/envs/py3k/lib/python3.7/distutils/ccompiler.py", line 574, in compile
    self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
  File "/home/envs/py3k/lib/python3.7/distutils/unixccompiler.py", line 120, in _compile
    raise CompileError(msg)
distutils.errors.CompileError: command '-Wsign-compare' failed with exit status 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "pyvips_build.py", line 52, in <module>
    ffibuilder.compile(verbose=True)
  File "/home/envs/py3k/lib/python3.7/site-packages/cffi/api.py", line 723, in compile
    compiler_verbose=verbose, debug=debug, **kwds)
  File "/home/envs/py3k/lib/python3.7/site-packages/cffi/recompiler.py", line 1526, in recompile
    compiler_verbose, debug)
  File "/home/envs/py3k/lib/python3.7/site-packages/cffi/ffiplatform.py", line 22, in compile
    outputfilename = _build(tmpdir, ext, compiler_verbose, debug)
  File "/home/envs/py3k/lib/python3.7/site-packages/cffi/ffiplatform.py", line 58, in _build
    raise VerificationError('%s: %s' % (e.__class__.__name__, e))
cffi.VerificationError: CompileError: command '-Wsign-compare' failed with exit status 1
(py3k) [root@gra pyvips]# export CC="cc"
(py3k) [root@gra pyvips]# python pyvips_build.py
generating ./_libvips.c
(already up-to-date)
the current directory is '/root/pyvips/pyvips'
running build_ext
building '_libvips' extension
cc -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -D_REENTRANT -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/libgsf-1 -I/usr/include/ImageMagick-6 -I/usr/include/orc-0.4 -I/usr/include/OpenEXR -I/usr/include/poppler/glib -I/usr/include/cairo -I/usr/include/librsvg-2.0 -I/usr/include/openslide -I/usr/include/cfitsio -I/usr/include/pango-1.0 -I/usr/include/libpng15 -I/usr/include/libxml2 -I/usr/include/libdrm -I/usr/include/poppler -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/uuid -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/harfbuzz -I/usr/include/fribidi -I/home/envs/py3k/include/python3.7m -c _libvips.c -o ./_libvips.o
_libvips.c: In function ‘_cffi_d_vips_foreign_get_suffixes’:
_libvips.c:2746:3: warning: implicit declaration of function ‘vips_foreign_get_suffixes’ [-Wimplicit-function-declaration]
   return vips_foreign_get_suffixes();
   ^
_libvips.c:2746:3: warning: return makes pointer from integer without a cast [enabled by default]
_libvips.c: In function ‘_cffi_f_vips_foreign_get_suffixes’:
_libvips.c:2756:12: warning: assignment makes pointer from integer without a cast [enabled by default]
   { result = vips_foreign_get_suffixes(); }
            ^
_libvips.c: In function ‘_cffi_checkfld__GEnumClass’:
_libvips.c:4910:25: warning: initialization from incompatible pointer type [enabled by default]
   { GTypeClass * *tmp = &p->g_type_class; (void)tmp; }
                         ^
_libvips.c: In function ‘_cffi_checkfld__GValue’:
_libvips.c:4973:25: warning: initialization from incompatible pointer type [enabled by default]
   { uint64_t(*tmp)[2] = &p->data; (void)tmp; }
                         ^
_libvips.c: In function ‘_cffi_checkfld__VipsObject’:
_libvips.c:5034:19: warning: initialization from incompatible pointer type [enabled by default]
   { void * *tmp = &p->argument_table; (void)tmp; }
                   ^
gcc -pthread -shared -B /home/envs/py3k/compiler_compat -L/home/envs/py3k/lib -Wl,-rpath=/home/envs/py3k/lib -Wl,--no-as-needed -Wl,--sysroot=/ ./_libvips.o -lvips -lgobject-2.0 -lglib-2.0 -o ./_libvips.cpython-37m-x86_64-linux-gnu.so
(py3k) [root@gra pyvips]#
 

@jcupitt Maybe we should give some details when it falls back to ABI mode during installation? For example (untested):

--- a/setup.py
+++ b/setup.py
@@ -115,5 +115,6 @@ def setup_ABI():
 
 try:
     setup_API()
-except Exception:
+except Exception as e:
+    print('Falling back to ABI mode. Details: {0}'.format(e))
     setup_ABI()

@s-sajid-ali
Copy link
Author

s-sajid-ali commented Mar 12, 2019

I'm not sure why it can't find the library :

can't find libvips
(ipy3) [sajid@xrmlite pyvips]$ python pyvips_build.py
Traceback (most recent call last):
  File "/home/sajid/.local/lib/python3.6/site-packages/pyvips/__init__.py", line 19, in <module>
    import _libvips
ModuleNotFoundError: No module named '_libvips'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "pyvips_build.py", line 42, in <module>
    from pyvips import decls
  File "/home/sajid/.local/lib/python3.6/site-packages/pyvips/__init__.py", line 70, in <module>
    vips_lib = ffi.dlopen(_vips_libname)
  File "/home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/cffi/api.py", line 146, in dlopen
    lib, function_cache = _make_ffi_library(self, name, flags)
  File "/home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/cffi/api.py", line 828, in _make_ffi_library
    backendlib = _load_backend_lib(backend, libname, flags)
  File "/home/sajid/miniconda3/envs/ipy3/lib/python3.6/site-packages/cffi/api.py", line 823, in _load_backend_lib
    raise OSError(msg)
OSError: cannot load library 'libvips.so.42': /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-rilxe37cjuisabs3kzapoljmdcr7jivc/lib/libvips.so.42: undefined symbol: GifErrorString.  Additionally, ctypes.util.find_library() did not manage to locate a library called 'libvips.so.42'
(ipy3) [sajid@xrmlite pyvips]$
but libvips.so.42 is present
(ipy3) [sajid@xrmlite lib]$ pwd
/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-rilxe37cjuisabs3kzapoljmdcr7jivc/lib
(ipy3) [sajid@xrmlite lib]$ ls
girepository-1.0/  libvips-cpp.la*  libvips-cpp.so.42@      libvips.a    libvips.so@     libvips.so.42.9.5*
libvips-cpp.a      libvips-cpp.so@  libvips-cpp.so.42.9.5*  libvips.la*  libvips.so.42@  pkgconfig/
(ipy3) [sajid@xrmlite lib]$
linking info if needed
(ipy3) [sajid@xrmlite lib]$ ldd  /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-rilxe37cjuisabs3kzapoljmdcr7jivc/lib/libvips.so.42         
        linux-vdso.so.1 =>  (0x00002b87fdfcf000)                                                                                                                              
        libpng16.so.16 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libpng-1.6.34-w7uyulnvlzmaxh3d7vdwbchab2kix2cd/lib/libpng16.so.16 (0x00002b87fe5
9a000)                                                                                                                                                                        
        libz.so.1 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/zlib-1.2.11-jqrcjdjnrxvouufhjtxbfvfms23fsqpx/lib/libz.so.1 (0x00002b87fe7ce000)      
        libtiff.so.5 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libtiff-4.0.9-3uurzuon2iyufwnguynvvhpx5ojginrv/lib/libtiff.so.5 (0x00002b87fe9e500
0)                                                                                                                                                                            
        libjpeg.so.9 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libjpeg-9c-b4kb3szzcgruu76euujjmukvv5uhongl/lib/libjpeg.so.9 (0x00002b87fec5d000) 
        libgmodule-2.0.so.0 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/glib-2.56.3-h6zmhwoaxadgvfqigafjp7hhsijqse5y/lib/libgmodule-2.0.so.0 (0x000
02b87fee98000)                                                                                                                                                                
        libexpat.so.1 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/expat-2.2.5-a4fdxiqw5fu3pgxyw47qqssw2auktfca/lib/libexpat.so.1 (0x00002b87ff09c00
0)                                                                                                                                                                            
        libgsf-1.so.114 => /lib64/libgsf-1.so.114 (0x00002b87ff2f5000)                                                                                                        
        libgobject-2.0.so.0 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/glib-2.56.3-h6zmhwoaxadgvfqigafjp7hhsijqse5y/lib/libgobject-2.0.so.0 (0x000
02b87ff539000)                                                                                                                                                                
        libxml2.so.2 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libxml2-2.9.8-pvkjcjhniktpkvoi2xiiws5pt56xczza/lib/libxml2.so.2 (0x00002b87ff78b00
0)                                                                                                                                                                            
        libglib-2.0.so.0 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/glib-2.56.3-h6zmhwoaxadgvfqigafjp7hhsijqse5y/lib/libglib-2.0.so.0 (0x00002b87f
faef000)                                                                                                                                                                      
        libintl.so.8 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/gettext-0.19.8.1-f7mnsjqqjvloiigc3fmw4bhwzlg4epk4/lib/libintl.so.8 (0x00002b87ffe0
4000)                                                                                                                                                                         
        libfftw3.so.3 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/fftw-3.3.8-elkotdoyinuflnyyybr4txlkip3hkiqv/lib/libfftw3.so.3 (0x00002b8800010000
)                                                                                                                                                                             
        liblcms2.so.2 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/lcms-2.9-nqtrsxzvmzffvh3pgeu3ikiyhuv5i6h6/lib/liblcms2.so.2 (0x00002b88004b2000) 
        libgif.so.4 => /lib64/libgif.so.4 (0x00002b880070b000)                                                                                                                
        libstdc++.so.6 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-8.3.0-wwpinbruamhvwaqdjijnfou7xkmb5knx/lib64/libstdc++.so.6 (0x00002b8800916
000)                                                                                                                                                                          
        libm.so.6 => /lib64/libm.so.6 (0x00002b8800c9a000)                                                                                                                    
        libc.so.6 => /lib64/libc.so.6 (0x00002b8800f9c000)                                                                                                                    
        libgcc_s.so.1 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-8.3.0-wwpinbruamhvwaqdjijnfou7xkmb5knx/lib64/libgcc_s.so.1 (0x00002b880136a00
0)                                                                                                                                                                            
        liblzma.so.5 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/xz-5.2.4-ychxj2ihh3tkkhxoirnfm5qdlyrtghs6/lib/liblzma.so.5 (0x00002b8801582000)   
        libdl.so.2 => /lib64/libdl.so.2 (0x00002b88017a9000)                                                                                                                  
        libiconv.so.2 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libiconv-1.15-uxpjjgympmndfl7p2dzog2xsyb6a7x4l/lib/libiconv.so.2 (0x00002b88019ae
000)                                                                                                                                                                          
        libpcre.so.1 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/pcre-8.42-jzvocp4iml23lyj3hqztqx53ewm7uuqb/lib/libpcre.so.1 (0x00002b8801cab000)  
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b8801eef000)                                                                                                        
        libbsd.so.0 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libbsd-0.9.1-pvpo4u55zzpvelx3rhj2ayi3o4c3zvzs/lib/libbsd.so.0 (0x00002b880210c000) 
        libgio-2.0.so.0 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/glib-2.56.3-h6zmhwoaxadgvfqigafjp7hhsijqse5y/lib/libgio-2.0.so.0 (0x00002b88023
23000)                                                                                                                                                                        
        libbz2.so.1 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/bzip2-1.0.6-oi23dv3ukoukpmaadpz5sh3mfitpfhd2/lib/libbz2.so.1 (0x00002b88026c3000)  
        libffi.so.6 => /home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libffi-3.2.1-snaogopzjmhzlol4hcqhbmqko42l57kw/lib/../lib64/libffi.so.6 (0x00002b880
28d5000)                                                                                                                                                                      
        libSM.so.6 => /lib64/libSM.so.6 (0x00002b8802ade000)                                                                                                                  
        libICE.so.6 => /lib64/libICE.so.6 (0x00002b8802ce7000)                                                                                                                
        libX11.so.6 => /lib64/libX11.so.6 (0x00002b8802f03000)                                                                                                                
        /lib64/ld-linux-x86-64.so.2 (0x00005571c0890000)                                                                                                                      
        librt.so.1 => /lib64/librt.so.1 (0x00002b8803242000)                                                                                                                  
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00002b880344b000)                                                                                                          
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00002b8803664000)                                                                                                              
        libxcb.so.1 => /lib64/libxcb.so.1 (0x00002b8803869000)                                                                                                                
        libXau.so.6 => /lib64/libXau.so.6 (0x00002b8803a92000)                                                                                                                
(ipy3) [sajid@xrmlite lib]$                                                                                                                                                   

@kleisauke
Copy link
Member

Here's the salient part of the log:

libvips.so.42: undefined symbol: GifErrorString

So it can find libvips but could not load it. It looks like libvips is compiled with giflib 5.x. but is linked against the system giflib (/lib64/libgif.so.4). FWIW, giflib on Centos 7 is still on 4.1.6.

@kleisauke
Copy link
Member

I think this can be fixed with spack load --dependencies libvips. This command will add the appropriate directories to your PATH, MANPATH, CPATH, and LD_LIBRARY_PATH.

@s-sajid-ali
Copy link
Author

Apologies, that was my mistake.

Now it finds the library but doesn't build in API mode :

Build info
(ipy3) [sajid@xrmlite packages]$ git clone https://github.com/jcupitt/pyvips
Cloning into 'pyvips'...
remote: Enumerating objects: 41, done.
remote: Counting objects: 100% (41/41), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 2195 (delta 18), reused 28 (delta 14), pack-reused 2154
Receiving objects: 100% (2195/2195), 18.72 MiB | 20.79 MiB/s, done.
Resolving deltas: 100% (1503/1503), done.
(ipy3) [sajid@xrmlite packages]$ cd pyvips/
(ipy3) [sajid@xrmlite pyvips]$ python setup.py build_ext --inplace
zip_safe flag not set; analyzing archive contents...

Installed /home/sajid/packages/pyvips/.eggs/pytest_runner-4.4-py3.6.egg
running build_ext
generating cffi module 'build/temp.linux-x86_64-3.6/_libvips.c'
creating build
creating build/temp.linux-x86_64-3.6
building '_libvips' extension
creating build/temp.linux-x86_64-3.6/build
creating build/temp.linux-x86_64-3.6/build/temp.linux-x86_64-3.6
/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-8.3.0-wwpinbruamhvwaqdjijnfou7xkmb5knx/bin/gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Wformat -Wformat-security -D_FORTIFY_SOURCE=2 -fstack-protector -O3 -fpic -fPIC -Wformat -Wformat-security -D_FORTIFY_SOURCE=2 -fstack-protector -O3 -fpic -fPIC -fPIC -I/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/lcms-2.9-nqtrsxzvmzffvh3pgeu3ikiyhuv5i6h6/include -I/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libtiff-4.0.9-3uurzuon2iyufwnguynvvhpx5ojginrv/include -I/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libjpeg-9c-b4kb3szzcgruu76euujjmukvv5uhongl/include -I/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libpng-1.6.34-w7uyulnvlzmaxh3d7vdwbchab2kix2cd/include/libpng16 -I/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/glib-2.56.3-h6zmhwoaxadgvfqigafjp7hhsijqse5y/include/glib-2.0 -I/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/glib-2.56.3-h6zmhwoaxadgvfqigafjp7hhsijqse5y/lib/glib-2.0/include -I/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/pcre-8.42-jzvocp4iml23lyj3hqztqx53ewm7uuqb/include -I/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/fftw-3.3.8-elkotdoyinuflnyyybr4txlkip3hkiqv/include -I/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/zlib-1.2.11-jqrcjdjnrxvouufhjtxbfvfms23fsqpx/include -I/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-4yfsjewzkp3sckskarnzr4lq5ovix3z5/include -I/home/sajid/miniconda3/envs/ipy3/include/python3.6m -c build/temp.linux-x86_64-3.6/_libvips.c -o build/temp.linux-x86_64-3.6/build/temp.linux-x86_64-3.6/_libvips.o
build/temp.linux-x86_64-3.6/_libvips.c: In function '_cffi_checkfld__GEnumClass':
build/temp.linux-x86_64-3.6/_libvips.c:4884:25: warning: initialization of 'GTypeClass **' {aka 'struct _GTypeClass **'} from incompatible pointer type 'GTypeClass *' {aka 'struct _GTypeClass *'} [-Wincompatible-pointer-types]
   { GTypeClass * *tmp = &p->g_type_class; (void)tmp; }
                         ^
build/temp.linux-x86_64-3.6/_libvips.c: In function '_cffi_checkfld__GValue':
build/temp.linux-x86_64-3.6/_libvips.c:4947:25: warning: initialization of 'uint64_t (*)[2]' {aka 'long unsigned int (*)[2]'} from incompatible pointer type 'union <anonymous> (*)[2]' [-Wincompatible-pointer-types]
   { uint64_t(*tmp)[2] = &p->data; (void)tmp; }
                         ^
build/temp.linux-x86_64-3.6/_libvips.c: In function '_cffi_checkfld__VipsObject':
build/temp.linux-x86_64-3.6/_libvips.c:5008:19: warning: initialization of 'void **' from incompatible pointer type 'VipsArgumentTable **' {aka 'struct _GHashTable **'} [-Wincompatible-pointer-types]
   { void * *tmp = &p->argument_table; (void)tmp; }
                   ^
creating build/lib.linux-x86_64-3.6
gcc -pthread -shared -L/home/sajid/miniconda3/envs/ipy3/lib -Wl,-rpath=/home/sajid/miniconda3/envs/ipy3/lib,--no-as-needed -z noexecstack -z relro -z now -fstack-protector build/temp.linux-x86_64-3.6/build/temp.linux-x86_64-3.6/_libvips.o -L/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/glib-2.56.3-h6zmhwoaxadgvfqigafjp7hhsijqse5y/lib -L/home/sajid/packages/spack/opt/spack/linux-centos7-x86_64/gcc-8.3.0/libvips-8.7.4-4yfsjewzkp3sckskarnzr4lq5ovix3z5/lib -L/home/sajid/miniconda3/envs/ipy3/lib -lvips -lgobject-2.0 -lglib-2.0 -lintl -lpython3.6m -o build/lib.linux-x86_64-3.6/_libvips.abi3.so
copying build/lib.linux-x86_64-3.6/_libvips.abi3.so ->
(ipy3) [sajid@xrmlite pyvips]$

@kleisauke
Copy link
Member

Looks like it has successfully built the extension! You can safely ignore those incompatible pointer type warnings, see: #47 (comment).

You could try to install pyvips by using pip:

pip install . --user --no-cache-dir

or

pip install --user --no-cache-dir pyvips 

Hopefully it will now install the API mode because there were no problems during the compilation of the extension.

@jcupitt
Copy link
Member

jcupitt commented Mar 13, 2019

@jcupitt Maybe we should give some details when it falls back to ABI mode during installation?

It will print e to debug logging on ABI load fail. On Windows it will almost always fall back to ABI mode, unfortunately, so I think it would be annoying to have the message print every time.

@kleisauke
Copy link
Member

It will print e to debug logging on ABI load fail. On Windows it will almost always fall back to ABI mode, unfortunately, so I think it would be annoying to have the message print every time.

I've just tried the proposed patch:

Output
(py3k) [root@gra pyvips]# export PKG_CONFIG_PATH=""
(py3k) [root@gra pyvips]# pip install . --user --no-cache-dir
Processing /root/pyvips
Requirement already satisfied: cffi>=1.0.0 in /home/envs/py3k/lib/python3.7/site-packages (from pyvips==2.1.6) (1.12.2)
Requirement already satisfied: pycparser in /home/envs/py3k/lib/python3.7/site-packages (from cffi>=1.0.0->pyvips==2.1.6) (2.19)
Installing collected packages: pyvips
  Running setup.py install for pyvips ... done
Successfully installed pyvips-2.1.6
(py3k) [root@gra pyvips]# pip show pyvips
Name: pyvips
Version: 2.1.6
Summary: binding for the libvips image processing library, ABI mode
Home-page: https://github.com/libvips/pyvips
Author: John Cupitt
Author-email: jcupitt@gmail.com
License: MIT
Location: /root/.local/lib/python3.7/site-packages
Requires: cffi
Required-by:
(py3k) [root@gra pyvips]# pip install . --user --no-cache-dir --verbose
Created temporary directory: /tmp/pip-ephem-wheel-cache-t6q8ytez
Created temporary directory: /tmp/pip-req-tracker-q2g_272p
Created requirements tracker '/tmp/pip-req-tracker-q2g_272p'
Created temporary directory: /tmp/pip-install-3i0w2wtm
Processing /root/pyvips
  Created temporary directory: /tmp/pip-req-build-zq8_6obf
  Added file:///root/pyvips to build tracker '/tmp/pip-req-tracker-q2g_272p'
    Running setup.py (path:/tmp/pip-req-build-zq8_6obf/setup.py) egg_info for package from file:///root/pyvips
    Running command python setup.py egg_info
    Falling back to ABI mode. Details: unable to find pkg-config package "vips"
    running egg_info
    creating pip-egg-info/pyvips.egg-info
    writing pip-egg-info/pyvips.egg-info/PKG-INFO
    writing dependency_links to pip-egg-info/pyvips.egg-info/dependency_links.txt
    writing requirements to pip-egg-info/pyvips.egg-info/requires.txt
    writing top-level names to pip-egg-info/pyvips.egg-info/top_level.txt
    writing manifest file 'pip-egg-info/pyvips.egg-info/SOURCES.txt'
    reading manifest file 'pip-egg-info/pyvips.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'pip-egg-info/pyvips.egg-info/SOURCES.txt'
  Source in /tmp/pip-req-build-zq8_6obf has version 2.1.6, which satisfies requirement pyvips==2.1.6 from file:///root/pyvips
  Removed pyvips==2.1.6 from file:///root/pyvips from build tracker '/tmp/pip-req-tracker-q2g_272p'
Requirement already satisfied: cffi>=1.0.0 in /home/envs/py3k/lib/python3.7/site-packages (from pyvips==2.1.6) (1.12.2)
Requirement already satisfied: pycparser in /home/envs/py3k/lib/python3.7/site-packages (from cffi>=1.0.0->pyvips==2.1.6) (2.19)
Installing collected packages: pyvips
  Found existing installation: pyvips 2.1.6
    Uninstalling pyvips-2.1.6:
      Created temporary directory: /root/.local/lib/python3.7/site-packages/~yvips-2.1.6-py3.7.egg-info
      Removing file or directory /root/.local/lib/python3.7/site-packages/pyvips-2.1.6-py3.7.egg-info
      Created temporary directory: /root/.local/lib/python3.7/site-packages/~yvips
      Removing file or directory /root/.local/lib/python3.7/site-packages/pyvips/
      Successfully uninstalled pyvips-2.1.6
  Created temporary directory: /tmp/pip-record-8vjpv4s5
  Running setup.py install for pyvips ...     Running command /home/envs/py3k/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-req-build-zq8_6obf/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-8vjpv4s5/install-record.txt --single-version-externally-managed --compile --user --prefix=
    Falling back to ABI mode. Details: unable to find pkg-config package "vips"
    running install
    running build
    running build_py
    creating build
    creating build/lib
    creating build/lib/pyvips
    copying pyvips/base.py -> build/lib/pyvips
    copying pyvips/vinterpolate.py -> build/lib/pyvips
    copying pyvips/gobject.py -> build/lib/pyvips
    copying pyvips/error.py -> build/lib/pyvips
    copying pyvips/__init__.py -> build/lib/pyvips
    copying pyvips/decls.py -> build/lib/pyvips
    copying pyvips/pyvips_build.py -> build/lib/pyvips
    copying pyvips/gvalue.py -> build/lib/pyvips
    copying pyvips/voperation.py -> build/lib/pyvips
    copying pyvips/vobject.py -> build/lib/pyvips
    copying pyvips/version.py -> build/lib/pyvips
    copying pyvips/vimage.py -> build/lib/pyvips
    copying pyvips/enums.py -> build/lib/pyvips
    running install_lib
    creating /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/base.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/vinterpolate.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/gobject.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/error.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/__init__.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/decls.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/pyvips_build.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/gvalue.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/voperation.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/vobject.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/version.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/vimage.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/enums.py -> /root/.local/lib/python3.7/site-packages/pyvips
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/base.py to base.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/vinterpolate.py to vinterpolate.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/gobject.py to gobject.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/error.py to error.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/__init__.py to __init__.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/decls.py to decls.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/pyvips_build.py to pyvips_build.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/gvalue.py to gvalue.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/voperation.py to voperation.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/vobject.py to vobject.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/version.py to version.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/vimage.py to vimage.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/enums.py to enums.cpython-37.pyc
    running install_egg_info
    running egg_info
    creating pyvips.egg-info
    writing pyvips.egg-info/PKG-INFO
    writing dependency_links to pyvips.egg-info/dependency_links.txt
    writing requirements to pyvips.egg-info/requires.txt
    writing top-level names to pyvips.egg-info/top_level.txt
    writing manifest file 'pyvips.egg-info/SOURCES.txt'
    reading manifest file 'pyvips.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'pyvips.egg-info/SOURCES.txt'
    Copying pyvips.egg-info to /root/.local/lib/python3.7/site-packages/pyvips-2.1.6-py3.7.egg-info
    running install_scripts
    writing list of installed files to '/tmp/pip-record-8vjpv4s5/install-record.txt'
done
  Removing source in /tmp/pip-req-build-zq8_6obf
Successfully installed pyvips-2.1.6
Cleaning up...
Removed build tracker '/tmp/pip-req-tracker-q2g_272p'
1 location(s) to search for versions of pip:
* https://pypi.org/simple/pip/
Getting page https://pypi.org/simple/pip/
Starting new HTTPS connection (1): pypi.org:443
https://pypi.org:443 "GET /simple/pip/ HTTP/1.1" 200 10884
Analyzing links from page https://pypi.org/simple/pip/
  Found link https://files.pythonhosted.org/packages/3d/9d/1e313763bdfb6a48977b65829c6ce2a43eaae29ea2f907c8bbef024a7219/pip-0.2.tar.gz#sha256=88bb8d029e1bf4acd0e04d300104b7440086f94cc1ce1c5c3c31e3293aee1f81 (from https://pypi.org/simple/pip/), version: 0.2
  Found link https://files.pythonhosted.org/packages/18/ad/c0fe6cdfe1643a19ef027c7168572dac6283b80a384ddf21b75b921877da/pip-0.2.1.tar.gz#sha256=83522005c1266cc2de97e65072ff7554ac0f30ad369c3b02ff3a764b962048da (from https://pypi.org/simple/pip/), version: 0.2.1
  Found link https://files.pythonhosted.org/packages/17/05/f66144ef69b436d07f8eeeb28b7f77137f80de4bf60349ec6f0f9509e801/pip-0.3.tar.gz#sha256=183c72455cb7f8860ac1376f8c4f14d7f545aeab8ee7c22cd4caf79f35a2ed47 (from https://pypi.org/simple/pip/), version: 0.3
  Found link https://files.pythonhosted.org/packages/0a/bb/d087c9a1415f8726e683791c0b2943c53f2b76e69f527f2e2b2e9f9e7b5c/pip-0.3.1.tar.gz#sha256=34ce534f17065c78f980702928e988a6b6b2d8a9851aae5f1571a1feb9bb58d8 (from https://pypi.org/simple/pip/), version: 0.3.1
  Found link https://files.pythonhosted.org/packages/cf/c3/153571aaac6cf999f4bb09c019b1ff379b7b599ea833813a41c784eec995/pip-0.4.tar.gz#sha256=28fc67558874f71fddda7168f73595f1650523dce3bc5bf189713ecdfc1e456e (from https://pypi.org/simple/pip/), version: 0.4
  Found link https://files.pythonhosted.org/packages/8d/c7/f05c87812fa5d9562ecbc5f4f1fc1570444f53c81c834a7f662af406e3c1/pip-0.5.tar.gz#sha256=328d8412782f22568508a0d0c78a49c9920a82e44c8dfca49954fe525c152b2a (from https://pypi.org/simple/pip/), version: 0.5
  Found link https://files.pythonhosted.org/packages/9a/aa/f536b6d14fe03343367da2ff44eee28f340ae650cd017ca088b6be13084a/pip-0.5.1.tar.gz#sha256=e27650538c41fe1007a41abd4cfd0f905b822622cbe1f8e7e09d1215af207694 (from https://pypi.org/simple/pip/), version: 0.5.1
  Found link https://files.pythonhosted.org/packages/db/e6/fdf7be8a17b032c533d3f91e91e2c63dd81d3627cbe4113248a00c2d39d8/pip-0.6.tar.gz#sha256=4cf47db6815b2f435d1f44e1f35ff04823043f6161f7df9aec71a123b0c47f0d (from https://pypi.org/simple/pip/), version: 0.6
  Found link https://files.pythonhosted.org/packages/91/cd/105f4d3c75d0ae18e12623acc96f42168aaba408dd6e43c4505aa21f8e37/pip-0.6.1.tar.gz#sha256=efe47e84ffeb0ea4804f9858b8a94bebd07f5452f907ebed36d03aed06a9f9ec (from https://pypi.org/simple/pip/), version: 0.6.1
  Found link https://files.pythonhosted.org/packages/1c/c7/c0e1a9413c37828faf290f29a85a4d6034c145cc04bf1622ba8beb662ad8/pip-0.6.2.tar.gz#sha256=1c1a504d7e70d2c24246f95bd16e3d5fcec740fd144df69a407bf65a2ee67586 (from https://pypi.org/simple/pip/), version: 0.6.2
  Found link https://files.pythonhosted.org/packages/3f/af/c4b9d49fb0f286996b28dbc0955c3ad359794697eb98e0e69863908070b0/pip-0.6.3.tar.gz#sha256=1a6df71eb29b98cba11bde6d6a0d8c6dd8b0518e74ceb71fb31ea4fbb42fd313 (from https://pypi.org/simple/pip/), version: 0.6.3
  Found link https://files.pythonhosted.org/packages/ec/7a/6fe91ff0079ad0437830957c459d52f3923e516f5b453218f2a93d09a427/pip-0.7.tar.gz#sha256=ceaea0b9e494d893c8a191895301b79c1db33e41f14d3ad93e3d28a8b4e9bf27 (from https://pypi.org/simple/pip/), version: 0.7
  Found link https://files.pythonhosted.org/packages/a5/63/11303863c2f5e9d9a15d89fcf7513a4b60987007d418862e0fb65c09fff7/pip-0.7.1.tar.gz#sha256=f54f05aa17edd0036de433c44892c8fedb1fd2871c97829838feb995818d24c3 (from https://pypi.org/simple/pip/), version: 0.7.1
  Found link https://files.pythonhosted.org/packages/cd/a9/1debaa96bbc1005c1c8ad3b79fec58c198d35121546ea2e858ce0894268a/pip-0.7.2.tar.gz#sha256=98df2eb779358412bbbae75980171ae85deebc846d87e244d086520b1212da09 (from https://pypi.org/simple/pip/), version: 0.7.2
  Found link https://files.pythonhosted.org/packages/74/54/f785c327fb3d163560a879b36edae5c78ee07806be282c9d4807f6be7dd1/pip-0.8.tar.gz#sha256=9017e4484a212dd4e1a43dd9f039dd7fc8338d4eea1c339d5ae1c80726de5b0f (from https://pypi.org/simple/pip/), version: 0.8
  Found link https://files.pythonhosted.org/packages/5c/79/5e8381cc3078bae92166f2ba96de8355e8c181926505ba8882f7b099a500/pip-0.8.1.tar.gz#sha256=7176a87f35675f6468341212f3b959bb51d23ea66eb1c3692bf746c45c716fa2 (from https://pypi.org/simple/pip/), version: 0.8.1
  Found link https://files.pythonhosted.org/packages/17/3e/0a98ab032991518741e7e712a719633e6ae160f51b3d3e855194530fd308/pip-0.8.2.tar.gz#sha256=f80a3549c048bc3bbcb47844826e9c7c6fcd87e77b92bef0d9e66d1b397c4962 (from https://pypi.org/simple/pip/), version: 0.8.2
  Found link https://files.pythonhosted.org/packages/f7/9a/943fc6d879ed7220bac2e7e53096bfe78abec88d77f2f516400e0129679e/pip-0.8.3.tar.gz#sha256=1be2e18edd38aa75b5e4ef38a99ec33ba9247177cfcb4a6d2d2b3e73430e3001 (from https://pypi.org/simple/pip/), version: 0.8.3
  Found link https://files.pythonhosted.org/packages/24/33/6eb675fb6db7b71d69d6928b33dea61b8bf5cfe1e5649be70ec84ce2fc09/pip-1.0.tar.gz#sha256=34ba07e2d14ba86d5088ba896ac80bed845a9b276ab8acb279b8d99bc77fec8e (from https://pypi.org/simple/pip/), version: 1.0
  Found link https://files.pythonhosted.org/packages/10/d9/f584e6107ef98ad7eaaaa5d0f756bfee12561fa6a4712ffdb7209e0e1fd4/pip-1.0.1.tar.gz#sha256=37d2f18213d3845d2038dd3686bc71fc12bb41ad66c945a8b0dfec2879f3497b (from https://pypi.org/simple/pip/), version: 1.0.1
  Found link https://files.pythonhosted.org/packages/16/90/5e6f80364d8a656f60681dfb7330298edef292d43e1499bcb3a4c71ff0b9/pip-1.0.2.tar.gz#sha256=a6ed9b36aac2f121c01a2c9e0307a9e4d9438d100a407db701ac65479a3335d2 (from https://pypi.org/simple/pip/), version: 1.0.2
  Found link https://files.pythonhosted.org/packages/25/57/0d42cf5307d79913a082c5c4397d46f3793bc35e1138a694136d6e31be99/pip-1.1.tar.gz#sha256=993804bb947d18508acee02141281c77d27677f8c14eaa64d6287a1c53ef01c8 (from https://pypi.org/simple/pip/), version: 1.1
  Found link https://files.pythonhosted.org/packages/ba/c3/4e1f892f41aaa217fe0d1f827fa05928783349c69f3cc06fdd68e112678a/pip-1.2.tar.gz#sha256=2b168f1987403f1dc6996a1f22a6f6637b751b7ab6ff27e78380b8d6e70aa314 (from https://pypi.org/simple/pip/), version: 1.2
  Found link https://files.pythonhosted.org/packages/c3/a2/a63244da32afd9ce9a8ca1bd86e71610039adea8b8314046ebe5047527a6/pip-1.2.1.tar.gz#sha256=12a9302acfca62cdc7bc5d83386cac3e0581db61ac39acdb3a4e766a16b88eb1 (from https://pypi.org/simple/pip/), version: 1.2.1
  Found link https://files.pythonhosted.org/packages/00/45/69d4f2602b80550bfb26cfd2f62c2f05b3b5c7352705d3766cd1e5b27648/pip-1.3.tar.gz#sha256=d6a13c5be316cb21a0243047c7f163f47e88973ebccff8d32e63ca1bf4d9321c (from https://pypi.org/simple/pip/), version: 1.3
  Found link https://files.pythonhosted.org/packages/5b/ce/f5b98104f1c10d868936c25f7c597f492d4371aa9ad5fb61a94954ee7208/pip-1.3.1.tar.gz#sha256=145eaa5d1ea1b062663da1f3a97780d7edea4c63c68a37c463b1deedf7bb4957 (from https://pypi.org/simple/pip/), version: 1.3.1
  Found link https://files.pythonhosted.org/packages/5f/d0/3b3958f6a58783bae44158b2c4c7827ae89abaecdd4bed12cff402620b9a/pip-1.4.tar.gz#sha256=1fd43cbf07d95ddcecbb795c97a1674b3ddb711bb4a67661284a5aa765aa1b97 (from https://pypi.org/simple/pip/), version: 1.4
  Found link https://files.pythonhosted.org/packages/3f/f8/da390e0df72fb61d176b25a4b95262e3dcc14bda0ad25ac64d56db38b667/pip-1.4.1.tar.gz#sha256=4e7a06554711a624c35d0c646f63674b7f6bfc7f80221bf1eb1f631bd890d04e (from https://pypi.org/simple/pip/), version: 1.4.1
  Found link https://files.pythonhosted.org/packages/4f/7d/e53bc80667378125a9e07d4929a61b0bd7128a1129dbe6f07bb3228652a3/pip-1.5.tar.gz#sha256=25f81d1a0e55d3b1709818dd57fdfb954b028f229f09bd69cb0bc80a8e03e048 (from https://pypi.org/simple/pip/), version: 1.5
  Found link https://files.pythonhosted.org/packages/44/5d/1dca53b5de6d287e7eb99bd174bb022eb6cb0d6ca6e19ca6b16655dde8c2/pip-1.5.1-py2.py3-none-any.whl#sha256=00960db3b0b8724dd37fe37cfb9c72ecb8f59fab9db7d17c5c1e89a1adab49ce (from https://pypi.org/simple/pip/), version: 1.5.1
  Found link https://files.pythonhosted.org/packages/21/3f/d86a600c9b2f41a75caacf768a24130f343def97652de2345da15ef7911f/pip-1.5.1.tar.gz#sha256=e60e936fbc101d56668c6134c1f2b5b40fcbec8b4fc4ca7fc34842b6b4c5c130 (from https://pypi.org/simple/pip/), version: 1.5.1
  Found link https://files.pythonhosted.org/packages/3d/1f/227d77d5e9ed2df5162de4ba3616799a351eccb1ecd668ae824dd26153a1/pip-1.5.2-py2.py3-none-any.whl#sha256=6903909ccdcdbc3297b74118590e71344d6d262827acd1f5c0e2fcfce9807499 (from https://pypi.org/simple/pip/), version: 1.5.2
  Found link https://files.pythonhosted.org/packages/ed/94/391a003107f6ec997c314199d03bff1c105af758ee490e3255353574487b/pip-1.5.2.tar.gz#sha256=2a8a3e08e652d3a40edbb39264bf01f8ff3c32520a79113357cca1f30533f738 (from https://pypi.org/simple/pip/), version: 1.5.2
  Found link https://files.pythonhosted.org/packages/df/e9/bdb53d44fad1465b43edaf6bc7dd3027ed5af81405cc97603fdff0721ebb/pip-1.5.3-py2.py3-none-any.whl#sha256=f0037aed3ce6cf96b9e9117d42e967a74bea9ebe19088a2fdea5de93d5762fee (from https://pypi.org/simple/pip/), version: 1.5.3
  Found link https://files.pythonhosted.org/packages/55/de/671a48ad313c808623041fc475f7c8f7610401d9f573f06b40eeb84e74e3/pip-1.5.3.tar.gz#sha256=dc53b4d28b88556a37cd73052b6d1d08cc644c6724e37c4d38a2e3c03c5440b2 (from https://pypi.org/simple/pip/), version: 1.5.3
  Found link https://files.pythonhosted.org/packages/a9/9a/9aa19fe00de4c025562e5fb3796ff8520165a7dd1a5662c6ec9816e1ae99/pip-1.5.4-py2.py3-none-any.whl#sha256=fb7282556a42e84464f2e963a859ac4012d8134ba6218b70c1d82d145fcfa82f (from https://pypi.org/simple/pip/), version: 1.5.4
  Found link https://files.pythonhosted.org/packages/78/d8/6e58a7130d457edadb753a0ea5708e411c100c7e94e72ad4802feeef735c/pip-1.5.4.tar.gz#sha256=70208a250bb4afdbbdd74c3ac35d4ab9ba1eb6852d02567a6a87f2f5104e30b9 (from https://pypi.org/simple/pip/), version: 1.5.4
  Found link https://files.pythonhosted.org/packages/ce/c2/10d996b9c51b126a9f0bb9e14a9edcdd5c88888323c0685bb9b392b6c47c/pip-1.5.5-py2.py3-none-any.whl#sha256=fe7a5808190067b2598d85def9b83db46e5d64a00848ad843e107c36e1db4ae6 (from https://pypi.org/simple/pip/), version: 1.5.5
  Found link https://files.pythonhosted.org/packages/88/01/a442fde40bd9aaf837612536f16ab751fac628807fd718690795b8ade77d/pip-1.5.5.tar.gz#sha256=4b7f5124364ae9b5ba833dcd8813a84c1c06fba1d7c8543323c7af4b33188eca (from https://pypi.org/simple/pip/), version: 1.5.5
  Found link https://files.pythonhosted.org/packages/3f/08/7347ca4021e7fe0f1ab8f93cbc7d2a7a7350012300ad0e0227d55625e2b8/pip-1.5.6-py2.py3-none-any.whl#sha256=fbc1351ffedf09ca7560428758845a88d648b9730b63ce9e5df53a7c89f039a4 (from https://pypi.org/simple/pip/), version: 1.5.6
  Found link https://files.pythonhosted.org/packages/45/db/4fb9a456b4ec4d3b701456ef562b9d72d76b6358e0c1463d17db18c5b772/pip-1.5.6.tar.gz#sha256=b1a4ae66baf21b7eb05a5e4f37c50c2706fa28ea1f8780ce8efe14dcd9f1726c (from https://pypi.org/simple/pip/), version: 1.5.6
  Found link https://files.pythonhosted.org/packages/dc/7c/21191b5944b917b66e4e4e06d74f668d814b6e8a3ff7acd874479b6f6b3d/pip-6.0-py2.py3-none-any.whl#sha256=5ec6732505bd8be49fe1f8ad557b88253ffb085736396df4d6bea753fc2a8f2c (from https://pypi.org/simple/pip/), version: 6.0
  Found link https://files.pythonhosted.org/packages/38/fd/065c66a88398f240e344fdf496b9707f92d75f88eedc3d10ff847b28a657/pip-6.0.tar.gz#sha256=6103897f1bb68d3f933edd60f3e3830c4ea6b8abf7a4b500db148921b11f6c9b (from https://pypi.org/simple/pip/), version: 6.0
  Found link https://files.pythonhosted.org/packages/e9/7a/cdbc1a12ed52410d557e48d4646f4543e9e991ff32d2374dc6db849aa617/pip-6.0.1-py2.py3-none-any.whl#sha256=322aea7d1f7b9ee68ad87ac4704cad5df97f77e70668c0bd18f964c5daa78173 (from https://pypi.org/simple/pip/), version: 6.0.1
  Found link https://files.pythonhosted.org/packages/4d/c3/8675b90cd89b9b222062f4f6c7e9d48b0387f5b35cbf747a74403a883e56/pip-6.0.1.tar.gz#sha256=fa2f7c68da4a405d673aa38542f9df009d60026db4f532429ac9cbfbda1f959d (from https://pypi.org/simple/pip/), version: 6.0.1
  Found link https://files.pythonhosted.org/packages/71/3c/b5a521e5e99cfff091e282231591f21193fd80de079ec5fb8ed9c6614044/pip-6.0.2-py2.py3-none-any.whl#sha256=7d17b0f267f7c9cd17cd2924bbbe2b4a3d407322c0e09084ca3f1295c1fed50d (from https://pypi.org/simple/pip/), version: 6.0.2
  Found link https://files.pythonhosted.org/packages/4c/5a/f9e8e3de0153282c7cb54a9b991af225536ac914bac858ca664cf883bb3e/pip-6.0.2.tar.gz#sha256=6fa90667706a679e3dc75b27a51fddafa64401c45e96f8ae6c20978183290077 (from https://pypi.org/simple/pip/), version: 6.0.2
  Found link https://files.pythonhosted.org/packages/73/cb/3eebf42003791df29219a3dfa1874572aa16114b44c9b1b0ac66bf96e8c0/pip-6.0.3-py2.py3-none-any.whl#sha256=b72655b6ac6aef1c86dd07f51e8ace8d7aabd6a1c4ff88db87155276fa32a073 (from https://pypi.org/simple/pip/), version: 6.0.3
  Found link https://files.pythonhosted.org/packages/ce/63/8d99ae60d11ae1a65f5d4fc39a529a598bd3b8e067132210cb0c4d9e9f74/pip-6.0.3.tar.gz#sha256=b091a35f5fa0faffac0b27b97e1e1e93ffe63b463c2ea8dbde0c1fb987933614 (from https://pypi.org/simple/pip/), version: 6.0.3
  Found link https://files.pythonhosted.org/packages/c5/0e/c974206726542bc495fc7443dd97834a6d14c2f0cba183fcfcd01075225a/pip-6.0.4-py2.py3-none-any.whl#sha256=8dfd95de29a7a3bb1e7d368cc83d566938eb210b04d553ebfe5e3a422f4aec65 (from https://pypi.org/simple/pip/), version: 6.0.4
  Found link https://files.pythonhosted.org/packages/02/a1/c90f19910ee153d7a0efca7216758121118d7e93084276541383fe9ca82e/pip-6.0.4.tar.gz#sha256=1dbbff9c369e510c7468ab68ba52c003f68f83c99c2f8259acd51099e8799f1e (from https://pypi.org/simple/pip/), version: 6.0.4
  Found link https://files.pythonhosted.org/packages/e9/1b/c6a375a337fb576784cdea3700f6c3eaf1420f0a01458e6e034cc178a84a/pip-6.0.5-py2.py3-none-any.whl#sha256=b2c20e3a2a43b2bbb1d19ad98be27eccc7b0f0ece016da602ccaa757a862b0e2 (from https://pypi.org/simple/pip/), version: 6.0.5
  Found link https://files.pythonhosted.org/packages/19/f2/58628768f618c8c9fea878e0fb97730c0b8a838d3ab3f325768bf12dac94/pip-6.0.5.tar.gz#sha256=3bf42d28be9085ab2e9aecfd69a6da2d31563fe833304bf71a620a30c38ab8a2 (from https://pypi.org/simple/pip/), version: 6.0.5
  Found link https://files.pythonhosted.org/packages/64/fc/4a49ccb18f55a0ceeb76e8d554bd4563217117492997825d194ed0017cc1/pip-6.0.6-py2.py3-none-any.whl#sha256=fb04f8afe1ba57626783f0c8e2f3d46bbaebaa446fcf124f434e968a2fee595e (from https://pypi.org/simple/pip/), version: 6.0.6
  Found link https://files.pythonhosted.org/packages/f6/ce/d9e4e178b66c766c117f62ddf4fece019ef9d50127a8926d2f60300d615e/pip-6.0.6.tar.gz#sha256=3a14091299dcdb9bab9e9004ae67ac401f2b1b14a7c98de074ca74fdddf4bfa0 (from https://pypi.org/simple/pip/), version: 6.0.6
  Found link https://files.pythonhosted.org/packages/7a/8e/2bbd4fcf3ee06ee90ded5f39ec12f53165dfdb9ef25a981717ad38a16670/pip-6.0.7-py2.py3-none-any.whl#sha256=93a326304c7db749896bcef822bbbac1ab29dad5651c6d732e245975239890e6 (from https://pypi.org/simple/pip/), version: 6.0.7
  Found link https://files.pythonhosted.org/packages/52/85/b160ebdaa84378df6bb0176d4eed9f57edca662446174eead7a9e2e566d6/pip-6.0.7.tar.gz#sha256=35a5a43ac6b7af83ed47ea5731a365f43d350a3a7267e039e5f06b61d42ab3c2 (from https://pypi.org/simple/pip/), version: 6.0.7
  Found link https://files.pythonhosted.org/packages/63/65/55b71647adec1ad595bf0e5d76d028506dfc002df30c256f022ff7a660a5/pip-6.0.8-py2.py3-none-any.whl#sha256=3c22b0a8ff92727bd737a82f72700790591f177541df08c07bc1f90d6b72ac19 (from https://pypi.org/simple/pip/), version: 6.0.8
  Found link https://files.pythonhosted.org/packages/ef/8a/e3a980bc0a7f791d72c1302f65763ed300f2e14c907ac033e01b44c79e5e/pip-6.0.8.tar.gz#sha256=0d58487a1b7f5be2e5e965c11afbea1dc44ecec8069de03491a4d0d6c85f4551 (from https://pypi.org/simple/pip/), version: 6.0.8
  Found link https://files.pythonhosted.org/packages/24/fb/8a56a46243514681e569bbafd8146fa383476c4b7c725c8598c452366f31/pip-6.1.0-py2.py3-none-any.whl#sha256=435a018f6d29e34d4f901bf4e6860d8a5fa1816b68d62008c18ca062a306db31 (from https://pypi.org/simple/pip/), version: 6.1.0
  Found link https://files.pythonhosted.org/packages/6c/84/432eb60bbcb414b9cdfcb135d5f4925e253c74e7d6916ada79990d6cc1a0/pip-6.1.0.tar.gz#sha256=89f120e2ab3d25ab70c36eb28ad4f280fc9ba71736e74d3055f609c1f9173768 (from https://pypi.org/simple/pip/), version: 6.1.0
  Found link https://files.pythonhosted.org/packages/67/f0/ba0fb41dbdbfc4aa3e0c16b40269aca6b9e3d59cacdb646218aa2e9b1d2c/pip-6.1.1-py2.py3-none-any.whl#sha256=a67e54aa0f26b6d62ccec5cc6735eff205dd0fed075f56ac3d3111e91e4467fc (from https://pypi.org/simple/pip/), version: 6.1.1
  Found link https://files.pythonhosted.org/packages/bf/85/871c126b50b8ee0b9819e8a63b614aedd264577e73478caedcd447e8f28c/pip-6.1.1.tar.gz#sha256=89f3b626d225e08e7f20d85044afa40f612eb3284484169813dc2d0631f2a556 (from https://pypi.org/simple/pip/), version: 6.1.1
  Found link https://files.pythonhosted.org/packages/5a/9b/56d3c18d0784d5f2bbd446ea2dc7ffa7476c35e3dc223741d20cfee3b185/pip-7.0.0-py2.py3-none-any.whl#sha256=309c48399c7d68501a10ef206abd6e5c541fedbf84b95435d9063bd454b39df7 (from https://pypi.org/simple/pip/), version: 7.0.0
  Found link https://files.pythonhosted.org/packages/c6/16/6475b142927ca5d03e3b7968efa5b0edd103e4684ecfde181a25f6fa2505/pip-7.0.0.tar.gz#sha256=7b46bfc1b95494731de306a688e2a7bc056d7fa7ad27e026908fb2ae67fed23d (from https://pypi.org/simple/pip/), version: 7.0.0
  Found link https://files.pythonhosted.org/packages/5a/10/bb7a32c335bceba636aa673a4c977effa1e73a79f88856459486d8d670cf/pip-7.0.1-py2.py3-none-any.whl#sha256=d26b8573ba1ac1ec99a9bdbdffee2ff2b06c7790815211d0eb4dc1462a089705 (from https://pypi.org/simple/pip/), version: 7.0.1
  Found link https://files.pythonhosted.org/packages/4a/83/9ae4362a80739657e0c8bb628ea3fa0214a9aba7c8590dacc301ea293f73/pip-7.0.1.tar.gz#sha256=cfec177552fdd0b2d12b72651c8e874f955b4c62c1c2c9f2588cbdc1c0d0d416 (from https://pypi.org/simple/pip/), version: 7.0.1
  Found link https://files.pythonhosted.org/packages/64/7f/7107800ae0919a80afbf1ecba21b90890431c3ee79d700adac3c79cb6497/pip-7.0.2-py2.py3-none-any.whl#sha256=83c869c5ab7113866e2d69641ec470d47f0faae68ca4550a289a4d3db515ad65 (from https://pypi.org/simple/pip/), version: 7.0.2
  Found link https://files.pythonhosted.org/packages/75/b1/66532c273bca0133e42c3b4540a1609289f16e3046f1830f18c60794d661/pip-7.0.2.tar.gz#sha256=ba28fa60b573a9444e7b78ccb3b0f261d1f66f46d20403f9dce37b18a6aed405 (from https://pypi.org/simple/pip/), version: 7.0.2
  Found link https://files.pythonhosted.org/packages/96/76/33a598ae42dd0554207d83c7acc60e3b166dbde723cbf282f1f73b7a127c/pip-7.0.3-py2.py3-none-any.whl#sha256=7b1cb03e827d58d2d05e68ea96a9e27487ed4b0afcd951ac6e40847ce94f0738 (from https://pypi.org/simple/pip/), version: 7.0.3
  Found link https://files.pythonhosted.org/packages/35/59/5b23115758ba0f2fc465c459611865173ef006202ba83f662d1f58ed2fb8/pip-7.0.3.tar.gz#sha256=b4c598825a6f6dc2cac65968feb28e6be6c1f7f1408493c60a07eaa731a0affd (from https://pypi.org/simple/pip/), version: 7.0.3
  Found link https://files.pythonhosted.org/packages/f7/c0/9f8dac88326609b4b12b304e8382f64f7d5af7735a00d2fac36cf135fc30/pip-7.1.0-py2.py3-none-any.whl#sha256=80c29f899d3a00a448d65f8158544d22935baec7159af8da1a4fa1490ced481d (from https://pypi.org/simple/pip/), version: 7.1.0
  Found link https://files.pythonhosted.org/packages/7e/71/3c6ece07a9a885650aa6607b0ebfdf6fc9a3ef8691c44b5e724e4eee7bf2/pip-7.1.0.tar.gz#sha256=d5275ba3221182a5dd1b6bcfbfc5ec277fb399dd23226d6fa018048f7e0f10f2 (from https://pypi.org/simple/pip/), version: 7.1.0
  Found link https://files.pythonhosted.org/packages/1c/56/094d563c508917081bccff365e4f621ba33073c1c13aca9267a43cfcaf13/pip-7.1.1-py2.py3-none-any.whl#sha256=ce13000878d34c1178af76cb8cf269e232c00508c78ed46c165dd5b0881615f4 (from https://pypi.org/simple/pip/), version: 7.1.1
  Found link https://files.pythonhosted.org/packages/3b/bb/b3f2a95494fd3f01d3b3ae530e7c0e910dc25e88e30787b0a5e10cbc0640/pip-7.1.1.tar.gz#sha256=b22fe3c93a13fc7c04f145a42fd2ad50a9e3e1b8a7eed2e2b1c66e540a0951da (from https://pypi.org/simple/pip/), version: 7.1.1
  Found link https://files.pythonhosted.org/packages/b2/d0/cd115fe345dd6f07ec1c780020a7dfe74966fceeb171e0f20d1d4905b0b7/pip-7.1.2-py2.py3-none-any.whl#sha256=b9d3983b5cce04f842175e30169d2f869ef12c3546fd274083a65eada4e9708c (from https://pypi.org/simple/pip/), version: 7.1.2
  Found link https://files.pythonhosted.org/packages/d0/92/1e8406c15d9372084a5bf79d96da3a0acc4e7fcf0b80020a4820897d2a5c/pip-7.1.2.tar.gz#sha256=ca047986f0528cfa975a14fb9f7f106271d4e0c3fe1ddced6c1db2e7ae57a477 (from https://pypi.org/simple/pip/), version: 7.1.2
  Found link https://files.pythonhosted.org/packages/00/ae/bddef02881ee09c6a01a0d6541aa6c75a226a4e68b041be93142befa0cd6/pip-8.0.0-py2.py3-none-any.whl#sha256=262ed1823eb7fbe3f18a9bedb4800e59c4ab9a6682aff8c37b5ee83ea840910b (from https://pypi.org/simple/pip/), version: 8.0.0
  Found link https://files.pythonhosted.org/packages/e3/2d/03c014d11e66628abf2fda5ca00f779cbe7b5292c5cd13d42a95b94aa9b8/pip-8.0.0.tar.gz#sha256=90112b296152f270cb8dddcd19b7b87488d9e002e8cf622e14c4da9c2f6319b1 (from https://pypi.org/simple/pip/), version: 8.0.0
  Found link https://files.pythonhosted.org/packages/45/9c/6f9a24917c860873e2ce7bd95b8f79897524353df51d5d920cd6b6c1ec33/pip-8.0.1-py2.py3-none-any.whl#sha256=dedaac846bc74e38a3253671f51a056331ffca1da70e3f48d8128f2aa0635bba (from https://pypi.org/simple/pip/), version: 8.0.1
  Found link https://files.pythonhosted.org/packages/ea/66/a3d6187bd307159fedf8575c0d9ee2294d13b1cdd11673ca812e6a2dda8f/pip-8.0.1.tar.gz#sha256=477c50b3e538a7ac0fa611fb8b877b04b33fb70d325b12a81b9dbf3eb1158a4d (from https://pypi.org/simple/pip/), version: 8.0.1
  Found link https://files.pythonhosted.org/packages/e7/a0/bd35f5f978a5e925953ce02fa0f078a232f0f10fcbe543d8cfc043f74fda/pip-8.0.2-py2.py3-none-any.whl#sha256=249a6f3194be8c2e8cb4d4be3f6fd16a9f1e3336218caffa8e7419e3816f9988 (from https://pypi.org/simple/pip/), version: 8.0.2
  Found link https://files.pythonhosted.org/packages/ce/15/ee1f9a84365423e9ef03d0f9ed0eba2fb00ac1fffdd33e7b52aea914d0f8/pip-8.0.2.tar.gz#sha256=46f4bd0d8dfd51125a554568d646fe4200a3c2c6c36b9f2d06d2212148439521 (from https://pypi.org/simple/pip/), version: 8.0.2
  Found link https://files.pythonhosted.org/packages/ae/d4/2b127310f5364610b74c28e2e6a40bc19e2d3c9a9a4e012d3e333e767c99/pip-8.0.3-py2.py3-none-any.whl#sha256=b0335bc837f9edb5aad03bd43d0973b084a1cbe616f8188dc23ba13234dbd552 (from https://pypi.org/simple/pip/), version: 8.0.3
  Found link https://files.pythonhosted.org/packages/22/f3/14bc87a4f6b5ec70b682765978a6f3105bf05b6781fa97e04d30138bd264/pip-8.0.3.tar.gz#sha256=30f98b66f3fe1069c529a491597d34a1c224a68640c82caf2ade5f88aa1405e8 (from https://pypi.org/simple/pip/), version: 8.0.3
  Found link https://files.pythonhosted.org/packages/1e/c7/78440b3fb882ed001e6e12d8770bd45e73d6eced4e57f7c072b829ce8a3d/pip-8.1.0-py2.py3-none-any.whl#sha256=a542b99e08002ead83200198e19a3983270357e1cb4fe704247990b5b35471dc (from https://pypi.org/simple/pip/), version: 8.1.0
  Found link https://files.pythonhosted.org/packages/3c/72/6981d5adf880adecb066a1a1a4c312a17f8d787a3b85446967964ac66d55/pip-8.1.0.tar.gz#sha256=d8faa75dd7d0737b16d50cd0a56dc91a631c79ecfd8d38b80f6ee929ec82043e (from https://pypi.org/simple/pip/), version: 8.1.0
  Found link https://files.pythonhosted.org/packages/31/6a/0f19a7edef6c8e5065f4346137cc2a08e22e141942d66af2e1e72d851462/pip-8.1.1-py2.py3-none-any.whl#sha256=44b9c342782ab905c042c207d995aa069edc02621ddbdc2b9f25954a0fdac25c (from https://pypi.org/simple/pip/), version: 8.1.1
  Found link https://files.pythonhosted.org/packages/41/27/9a8d24e1b55bd8c85e4d022da2922cb206f183e2d18fee4e320c9547e751/pip-8.1.1.tar.gz#sha256=3e78d3066aaeb633d185a57afdccf700aa2e660436b4af618bcb6ff0fa511798 (from https://pypi.org/simple/pip/), version: 8.1.1
  Found link https://files.pythonhosted.org/packages/9c/32/004ce0852e0a127f07f358b715015763273799bd798956fa930814b60f39/pip-8.1.2-py2.py3-none-any.whl#sha256=6464dd9809fb34fc8df2bf49553bb11dac4c13d2ffa7a4f8038ad86a4ccb92a1 (from https://pypi.org/simple/pip/), version: 8.1.2
  Found link https://files.pythonhosted.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz#sha256=4d24b03ffa67638a3fa931c09fd9e0273ffa904e95ebebe7d4b1a54c93d7b732 (from https://pypi.org/simple/pip/), version: 8.1.2
  Found link https://files.pythonhosted.org/packages/3f/ef/935d9296acc4f48d1791ee56a73781271dce9712b059b475d3f5fa78487b/pip-9.0.0-py2.py3-none-any.whl#sha256=c856ac18ca01e7127456f831926dc67cc7d3ab663f4c13b1ec156e36db4de574 (from https://pypi.org/simple/pip/) (requires-python:>=2.6,!=3.0.*,!=3.1.*,!=3.2.*), version: 9.0.0
  Found link https://files.pythonhosted.org/packages/5e/53/eaef47e5e2f75677c9de0737acc84b659b78a71c4086f424f55346a341b5/pip-9.0.0.tar.gz#sha256=f62fb70e7e000e46fce12aaeca752e5281a5446977fe5a75ab4189a43b3f8793 (from https://pypi.org/simple/pip/) (requires-python:>=2.6,!=3.0.*,!=3.1.*,!=3.2.*), version: 9.0.0
  Found link https://files.pythonhosted.org/packages/b6/ac/7015eb97dc749283ffdec1c3a88ddb8ae03b8fad0f0e611408f196358da3/pip-9.0.1-py2.py3-none-any.whl#sha256=690b762c0a8460c303c089d5d0be034fb15a5ea2b75bdf565f40421f542fefb0 (from https://pypi.org/simple/pip/) (requires-python:>=2.6,!=3.0.*,!=3.1.*,!=3.2.*), version: 9.0.1
  Found link https://files.pythonhosted.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#sha256=09f243e1a7b461f654c26a725fa373211bb7ff17a9300058b205c61658ca940d (from https://pypi.org/simple/pip/) (requires-python:>=2.6,!=3.0.*,!=3.1.*,!=3.2.*), version: 9.0.1
  Found link https://files.pythonhosted.org/packages/e7/f9/e801dcea22886cd513f6bd2e8f7e581bd6f67bb8e8f1cd8e7b92d8539280/pip-9.0.2-py2.py3-none-any.whl#sha256=b135491ddb061f39719b8472d8abb59c613816a2b86069c332db74d1cd208ab2 (from https://pypi.org/simple/pip/) (requires-python:>=2.6,!=3.0.*,!=3.1.*,!=3.2.*), version: 9.0.2
  Found link https://files.pythonhosted.org/packages/e5/8f/3fc66461992dc9e9fcf5e005687d5f676729172dda640df2fd8b597a6da7/pip-9.0.2.tar.gz#sha256=88110a224e9d30e5d76592a0b2130ef10e7e67a6426e8617bb918fffbfe91fe5 (from https://pypi.org/simple/pip/) (requires-python:>=2.6,!=3.0.*,!=3.1.*,!=3.2.*), version: 9.0.2
  Found link https://files.pythonhosted.org/packages/ac/95/a05b56bb975efa78d3557efa36acaf9cf5d2fd0ee0062060493687432e03/pip-9.0.3-py2.py3-none-any.whl#sha256=c3ede34530e0e0b2381e7363aded78e0c33291654937e7373032fda04e8803e5 (from https://pypi.org/simple/pip/) (requires-python:>=2.6,!=3.0.*,!=3.1.*,!=3.2.*), version: 9.0.3
  Found link https://files.pythonhosted.org/packages/c4/44/e6b8056b6c8f2bfd1445cc9990f478930d8e3459e9dbf5b8e2d2922d64d3/pip-9.0.3.tar.gz#sha256=7bf48f9a693be1d58f49f7af7e0ae9fe29fd671cde8a55e6edca3581c4ef5796 (from https://pypi.org/simple/pip/) (requires-python:>=2.6,!=3.0.*,!=3.1.*,!=3.2.*), version: 9.0.3
  Found link https://files.pythonhosted.org/packages/4b/5a/8544ae02a5bd28464e03af045e8aabde20a7b02db1911a9159328e1eb25a/pip-10.0.0b1-py2.py3-none-any.whl#sha256=dbd5d24cd461be23429625085a36cc8732cbcac4d2aaf673031f80f6ac07d844 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*), version: 10.0.0b1
  Found link https://files.pythonhosted.org/packages/aa/6d/ffbb86abf18b750fb26f27eda7c7732df2aacaa669c420d2eb2ad6df3458/pip-10.0.0b1.tar.gz#sha256=8d6e63d8b99752e4b53f272b66f9cd7b59e2b288e9a863a61c48d167203a2656 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*), version: 10.0.0b1
  Found link https://files.pythonhosted.org/packages/97/72/1d514201e7d7fc7fff5aac3de9c7b892cd72fb4bf23fd983630df96f7412/pip-10.0.0b2-py2.py3-none-any.whl#sha256=79f55588912f1b2b4f86f96f11e329bb01b25a484e2204f245128b927b1038a7 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*), version: 10.0.0b2
  Found link https://files.pythonhosted.org/packages/32/67/572f642e6e42c580d3154964cfbab7d9322c23b0f417c6c01fdd206a2777/pip-10.0.0b2.tar.gz#sha256=ad6adec2150ce4aed8f6134d9b77d928fc848dbcb887fb1a455988cf99da5cae (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*), version: 10.0.0b2
  Found link https://files.pythonhosted.org/packages/62/a1/0d452b6901b0157a0134fd27ba89bf95a857fbda64ba52e1ca2cf61d8412/pip-10.0.0-py2.py3-none-any.whl#sha256=86a60a96d85e329962a9e6f6af612cbc11106293dbc83f119802b5bee9874cf3 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*), version: 10.0.0
  Found link https://files.pythonhosted.org/packages/e0/69/983a8e47d3dfb51e1463c1e962b2ccd1d74ec4e236e232625e353d830ed2/pip-10.0.0.tar.gz#sha256=f05a3eeea64bce94e85cc6671d679473d66288a4d37c3fcf983584954096b34f (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*), version: 10.0.0
  Found link https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl#sha256=717cdffb2833be8409433a93746744b59505f42146e8d37de6c62b430e25d6d7 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*), version: 10.0.1
  Found link https://files.pythonhosted.org/packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz#sha256=f2bd08e0cd1b06e10218feaf6fef299f473ba706582eb3bd9d52203fdbd7ee68 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*), version: 10.0.1
  Found link https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl#sha256=070e4bf493c7c2c9f6a08dd797dd3c066d64074c38e9e8a0fb4e6541f266d96c (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 18.0
  Found link https://files.pythonhosted.org/packages/69/81/52b68d0a4de760a2f1979b0931ba7889202f302072cc7a0d614211bc7579/pip-18.0.tar.gz#sha256=a0e11645ee37c90b40c46d607070c4fd583e2cd46231b1c06e389c5e814eed76 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 18.0
  Found link https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl#sha256=7909d0a0932e88ea53a7014dfd14522ffef91a464daaaf5c573343852ef98550 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 18.1
  Found link https://files.pythonhosted.org/packages/45/ae/8a0ad77defb7cc903f09e551d88b443304a9bd6e6f124e75c0fbbf6de8f7/pip-18.1.tar.gz#sha256=c0a292bd977ef590379a3f05d7b7f65135487b67470f6281289a94e015650ea1 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 18.1
  Found link https://files.pythonhosted.org/packages/60/64/73b729587b6b0d13e690a7c3acd2231ee561e8dd28a58ae1b0409a5a2b20/pip-19.0-py2.py3-none-any.whl#sha256=249ab0de4c1cef3dba4cf3f8cca722a07fc447b1692acd9f84e19c646db04c9a (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 19.0
  Found link https://files.pythonhosted.org/packages/11/31/c483614095176ddfa06ac99c2af4171375053b270842c7865ca0b4438dc1/pip-19.0.tar.gz#sha256=c82bf8bc00c5732f0dd49ac1dea79b6242a1bd42a5012e308ed4f04369b17e54 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 19.0
  Found link https://files.pythonhosted.org/packages/46/dc/7fd5df840efb3e56c8b4f768793a237ec4ee59891959d6a215d63f727023/pip-19.0.1-py2.py3-none-any.whl#sha256=aae79c7afe895fb986ec751564f24d97df1331bb99cdfec6f70dada2f40c0044 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 19.0.1
  Found link https://files.pythonhosted.org/packages/c8/89/ad7f27938e59db1f0f55ce214087460f65048626e2226531ba6cb6da15f0/pip-19.0.1.tar.gz#sha256=e81ddd35e361b630e94abeda4a1eddd36d47a90e71eb00f38f46b57f787cd1a5 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 19.0.1
  Found link https://files.pythonhosted.org/packages/d7/41/34dd96bd33958e52cb4da2f1bf0818e396514fd4f4725a79199564cd0c20/pip-19.0.2-py2.py3-none-any.whl#sha256=6a59f1083a63851aeef60c7d68b119b46af11d9d803ddc1cf927b58edcd0b312 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 19.0.2
  Found link https://files.pythonhosted.org/packages/4c/4d/88bc9413da11702cbbace3ccc51350ae099bb351febae8acc85fec34f9af/pip-19.0.2.tar.gz#sha256=f851133f8b58283fa50d8c78675eb88d4ff4cde29b6c41205cd938b06338e0e5 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 19.0.2
  Found link https://files.pythonhosted.org/packages/d8/f3/413bab4ff08e1fc4828dfc59996d721917df8e8583ea85385d51125dceff/pip-19.0.3-py2.py3-none-any.whl#sha256=bd812612bbd8ba84159d9ddc0266b7fbce712fc9bc98c82dee5750546ec8ec64 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 19.0.3
  Found link https://files.pythonhosted.org/packages/36/fa/51ca4d57392e2f69397cd6e5af23da2a8d37884a605f9e3f2d3bfdc48397/pip-19.0.3.tar.gz#sha256=6e6f197a1abfb45118dbb878b5c859a0edbdd33fd250100bc015b67fded4b9f2 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 19.0.3
(py3k) [root@gra pyvips]# pip show pyvips
Name: pyvips
Version: 2.1.6
Summary: binding for the libvips image processing library, ABI mode
Home-page: https://github.com/libvips/pyvips
Author: John Cupitt
Author-email: jcupitt@gmail.com
License: MIT
Location: /root/.local/lib/python3.7/site-packages
Requires: cffi
Required-by:
(py3k) [root@gra pyvips]#
 

So Falling back to ABI mode. Details: unable to find pkg-config package "vips" will only print if we install pyvips with the --verbose flag. Not sure if the same behavior applies to Windows.

@jcupitt
Copy link
Member

jcupitt commented Mar 13, 2019

But won't you get that message every time you import pyvips?

@s-sajid-ali
Copy link
Author

Uninstalled the pip installed package and built from source in API mode.

Thanks a lot for all the help @kleisauke !

@kleisauke
Copy link
Member

But won't you get that message every time you import pyvips?

It's during the installation so it will be OK (pyvips/__init__.py only affects import pyvips). The print function is not elegant, how about this?

--- a/setup.py
+++ b/setup.py
@@ -11,6 +11,7 @@ from codecs import open
 from os import path
 
 from setuptools import setup, find_packages
+from distutils import log
 
 here = path.abspath(path.dirname(__file__))
 
@@ -115,5 +116,6 @@ def setup_ABI():
 
 try:
     setup_API()
-except Exception:
+except Exception as e:
+    log.warn('Falling back to ABI mode. Details: {0}'.format(e))
     setup_ABI()

(I used log.warn because the default level of distutils.log is WARN).

Output of `pip install`
(py3k) [root@gra pyvips]# export PKG_CONFIG_PATH=""
(py3k) [root@gra pyvips]# pip install . --user --no-cache-dir --verbose
Created temporary directory: /tmp/pip-ephem-wheel-cache-w8ixcb24
Created temporary directory: /tmp/pip-req-tracker-ws_up50u
Created requirements tracker '/tmp/pip-req-tracker-ws_up50u'
Created temporary directory: /tmp/pip-install-b12hvjfh
Processing /root/pyvips
  Created temporary directory: /tmp/pip-req-build-69ncl1nv
  Added file:///root/pyvips to build tracker '/tmp/pip-req-tracker-ws_up50u'
    Running setup.py (path:/tmp/pip-req-build-69ncl1nv/setup.py) egg_info for package from file:///root/pyvips
    Running command python setup.py egg_info
    Falling back to ABI mode. Details: unable to find pkg-config package "vips"
    running egg_info
    creating pip-egg-info/pyvips.egg-info
    writing pip-egg-info/pyvips.egg-info/PKG-INFO
    writing dependency_links to pip-egg-info/pyvips.egg-info/dependency_links.txt
    writing requirements to pip-egg-info/pyvips.egg-info/requires.txt
    writing top-level names to pip-egg-info/pyvips.egg-info/top_level.txt
    writing manifest file 'pip-egg-info/pyvips.egg-info/SOURCES.txt'
    reading manifest file 'pip-egg-info/pyvips.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'pip-egg-info/pyvips.egg-info/SOURCES.txt'
  Source in /tmp/pip-req-build-69ncl1nv has version 2.1.6, which satisfies requirement pyvips==2.1.6 from file:///root/pyvips
  Removed pyvips==2.1.6 from file:///root/pyvips from build tracker '/tmp/pip-req-tracker-ws_up50u'
Requirement already satisfied: cffi>=1.0.0 in /home/envs/py3k/lib/python3.7/site-packages (from pyvips==2.1.6) (1.12.2)
Requirement already satisfied: pycparser in /home/envs/py3k/lib/python3.7/site-packages (from cffi>=1.0.0->pyvips==2.1.6) (2.19)
Installing collected packages: pyvips
  Created temporary directory: /tmp/pip-record-509l7i7a
  Running setup.py install for pyvips ...     Running command /home/envs/py3k/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-req-build-69ncl1nv/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-509l7i7a/install-record.txt --single-version-externally-managed --compile --user --prefix=
    Falling back to ABI mode. Details: unable to find pkg-config package "vips"
    running install
    running build
    running build_py
    creating build
    creating build/lib
    creating build/lib/pyvips
    copying pyvips/base.py -> build/lib/pyvips
    copying pyvips/vinterpolate.py -> build/lib/pyvips
    copying pyvips/gobject.py -> build/lib/pyvips
    copying pyvips/error.py -> build/lib/pyvips
    copying pyvips/__init__.py -> build/lib/pyvips
    copying pyvips/decls.py -> build/lib/pyvips
    copying pyvips/pyvips_build.py -> build/lib/pyvips
    copying pyvips/gvalue.py -> build/lib/pyvips
    copying pyvips/voperation.py -> build/lib/pyvips
    copying pyvips/vobject.py -> build/lib/pyvips
    copying pyvips/version.py -> build/lib/pyvips
    copying pyvips/vimage.py -> build/lib/pyvips
    copying pyvips/enums.py -> build/lib/pyvips
    running install_lib
    creating /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/base.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/vinterpolate.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/gobject.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/error.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/__init__.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/decls.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/pyvips_build.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/gvalue.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/voperation.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/vobject.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/version.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/vimage.py -> /root/.local/lib/python3.7/site-packages/pyvips
    copying build/lib/pyvips/enums.py -> /root/.local/lib/python3.7/site-packages/pyvips
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/base.py to base.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/vinterpolate.py to vinterpolate.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/gobject.py to gobject.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/error.py to error.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/__init__.py to __init__.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/decls.py to decls.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/pyvips_build.py to pyvips_build.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/gvalue.py to gvalue.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/voperation.py to voperation.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/vobject.py to vobject.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/version.py to version.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/vimage.py to vimage.cpython-37.pyc
    byte-compiling /root/.local/lib/python3.7/site-packages/pyvips/enums.py to enums.cpython-37.pyc
    running install_egg_info
    running egg_info
    creating pyvips.egg-info
    writing pyvips.egg-info/PKG-INFO
    writing dependency_links to pyvips.egg-info/dependency_links.txt
    writing requirements to pyvips.egg-info/requires.txt
    writing top-level names to pyvips.egg-info/top_level.txt
    writing manifest file 'pyvips.egg-info/SOURCES.txt'
    reading manifest file 'pyvips.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'pyvips.egg-info/SOURCES.txt'
    Copying pyvips.egg-info to /root/.local/lib/python3.7/site-packages/pyvips-2.1.6-py3.7.egg-info
    running install_scripts
    writing list of installed files to '/tmp/pip-record-509l7i7a/install-record.txt'
done
  Removing source in /tmp/pip-req-build-69ncl1nv
Successfully installed pyvips-2.1.6
(py3k) [root@gra pyvips]# python
Python 3.7.2 (default, Dec 29 2018, 06:19:36)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import logging; logging.basicConfig(level = logging.DEBUG)
>>> import pyvips
DEBUG:pyvips:Binary module load failed: No module named '_libvips'
DEBUG:pyvips:Falling back to ABI mode
DEBUG:pyvips:Loaded lib <cffi.api._make_ffi_library.<locals>.FFILibrary object at 0x7f2a1d2eca58>
DEBUG:pyvips:Loaded lib <cffi.api._make_ffi_library.<locals>.FFILibrary object at 0x7f2a1d2db9e8>
DEBUG:pyvips:Inited libvips
>>> exit()
(py3k) [root@gra pyvips]#

@jcupitt
Copy link
Member

jcupitt commented Mar 15, 2019

Oh, you're right, sorry, I was thinking of the fallback code in __init__.py.

Is it OK to mix setuptools and distutils like that? Another option might be to have a post-install hook in the ABI case that displays a message, eg.

pypa/pip#2933 (comment)

@kleisauke
Copy link
Member

Is it OK to mix setuptools and distutils like that?

I think it will be OK, I've seen the same thing in source code at cffi. See:
https://bitbucket.org/cffi/cffi/src/000711129df090abe3f353313281cf416e5780fd/cffi/setuptools_ext.py#setuptools_ext.py-154,158

Another option might be to have a post-install hook in the ABI case that displays a message, eg.

This may also be a good option. As long as we keep the user informed, I think it's good. :)

@jcupitt
Copy link
Member

jcupitt commented Jul 5, 2020

2.1.13 includes this extra information.

@jcupitt jcupitt closed this as completed Jul 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants