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

Ralf Gommers ralf.gommers@gmail....
Fri Sep 21 15:42:05 CDT 2012


On Fri, Sep 21, 2012 at 10:37 PM, Benjamin Root <ben.root@ou.edu> wrote:

>
>
> On Fri, Sep 21, 2012 at 4:19 PM, Travis Oliphant <travis@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).
>

Eh, just installing numpy with "python setup.py install" uses plain
distutils, not setuptools. So there indeed isn't an entry in
easy-install.pth.  Which some consider a feature:)


> If pip is having a problem detecting numpy, then that is a bug that needs
> fixing somewhere.
>

Sure. But who's going to do that?


> 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.
>

No, if the version detection fails pip will happily "upgrade" my 1.8.0-dev
to 1.6.2.


> I have found install_requires to be a powerful feature in my setup.py
> scripts, and I have seen no reason to discourage it.  Perhaps I am the only
> one?
>

I'm sure you're not the only one. But it's still severely broken.

Ralf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20120921/d5054c90/attachment-0001.html 


More information about the NumPy-Discussion mailing list