[Numpy-discussion] specifying numpy as dependency in your project, install_requires

Andreas Hilboll lists at hilboll.de
Fri Sep 21 16:41:33 EDT 2012


Am Fr 21 Sep 2012 22:37:13 CEST schrieb Benjamin Root:
>
>
> On Fri, Sep 21, 2012 at 4:19 PM, Travis Oliphant <travis at continuum.io
> <mailto:travis at continuum.io>> wrote:
>
>
>     On Sep 21, 2012, at 3:13 PM, Ralf Gommers wrote:
>
>>     Hi,
>>
>>     An issue I keep running into is that packages use:
>>         install_requires = ["numpy"]
>>     or
>>         install_requires = ['numpy >= 1.6']
>>
>>     in their setup.py. This simply doesn't work a lot of the time. I
>>     actually filed a bug against patsy for that
>>     (https://github.com/pydata/patsy/issues/5), but Nathaniel is
>>     right that it would be better to bring it up on this list.
>>
>>     The problem is that if you use pip, it doesn't detect numpy (may
>>     work better if you had installed numpy with setuptools) and tries
>>     to automatically install or upgrade numpy. That won't work if
>>     users don't have the right compiler. Just as bad would be that it
>>     does work, and the user didn't want to upgrade for whatever reason.
>>
>>     This isn't just my problem; at Wes' pandas tutorial at EuroScipy
>>     I saw other people have the exact same problem. My recommendation
>>     would be to not use install_requires for numpy, but simply do
>>     something like this in setup.py:
>>
>>         try:
>>             import numpy
>>         except ImportError:
>>             raise ImportError("my_package requires numpy")
>>
>>     or
>>
>>         try:
>>             from numpy.version import short_version as npversion
>>         except ImportError:
>>             raise ImportError("my_package requires numpy")
>>         if npversion < '1.6':
>>            raise ImportError("Numpy version is %s; required is
>>     version >= 1.6" % npversion)
>>
>>     Any objections, better ideas? Is there a good place to put it in
>>     the numpy docs somewhere?
>
>     I agree.   I would recommend against using install requires.
>
>     -Travis
>
>
>
> Why?  I have personally never had an issue with this.  The only way I
> could imagine that this wouldn't work is if numpy was installed via
> some other means and there wasn't an entry in the easy-install.pth (or
> whatever equivalent pip uses).  If pip is having a problem detecting
> numpy, then that is a bug that needs fixing somewhere.
>
> As for packages getting updated unintentionally, easy_install and pip
> both require an argument to upgrade any existing packages (I think
> -U), so I am not sure how you are running into such a situation.

Quite easily, actually. I ran into pip wanting to upgrade numpy when I 
was installing/upgrading a package depending on numpy. Problem is, -U 
upgrades both the package you explicitly select *and* its dependencies. 
I know there's some way around this, but it's not obvious -- at least 
not for users.

Cheers, Andreas.




More information about the NumPy-Discussion mailing list