[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