<div dir="ltr"><div class="gmail_default" style="font-family:monospace">Yes, I understand that the limited install might be desirable under some circumstances.<br></div><div class="gmail_default" style="font-family:monospace">Maybe adding some argument-parsing capabilities to setup.py so that one could invoke<br></div><div class="gmail_default" style="font-family:monospace">./setup.py install --nonumpy<br></div><div class="gmail_default" style="font-family:monospace">(pip could be made to also accept flags to this end with<code><span class=""> --</span><span class="">install</span><span class="">-</span><span class="">option</span></code>=&quot;--nonumpy&quot;<code><span class=""></span></code>)<br></div><div class="gmail_default" style="font-family:monospace">Python implementations where C-compiled code isn&#39;t supported would just silently ignore the flags and skip any numpy-related stuff.<br></div><div class="gmail_default" style="font-family:monospace"><br>My point here is that a user wouldn&#39;t have to actively preinstall numpy.<br></div><div class="gmail_default" style="font-family:monospace">&quot;pip install biopython&quot; would just work.<br><br></div><div class="gmail_default" style="font-family:monospace">What do you think?<br></div><div class="gmail_default" style="font-family:monospace">Manel<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 23, 2015 at 5:12 PM, Peter Cock <span dir="ltr">&lt;<a href="mailto:p.j.a.cock@googlemail.com" target="_blank">p.j.a.cock@googlemail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Manuel,<br>
<br>
The numpy specific hacks in Biopython&#39;s setup.py are a bit<br>
of a pain, yes.<br>
<br>
In my view, the main reason we have a &quot;soft&quot; dependency on<br>
NumPy is that we also want to be able to use Biopython on<br>
other Python implementations where NumPy is not available,<br>
e.g. Jython and PyPy (we need to check how their NumPyPy<br>
work is getting on, it may cover some of our usage now).<br>
<br>
In practice, even if the traditional Python implementation (in C)<br>
is used, there are times when it is helpful to be able to install<br>
most of Biopython without NumPy - for example virtual machine<br>
images for testing etc.<br>
<br>
In practise, maybe we should remove this special case an<br>
for the traditional Python implementation (in C) insist that<br>
numpy is already installed?<br>
<br>
(Modularising Biopython would be another practical solution<br>
to the partial NumPy dependency, but vastly more work)<br>
<br>
Peter<br>
<div><div class="h5"><br>
On Fri, Oct 23, 2015 at 2:56 PM, Manuel Nuno Melo<br>
&lt;<a href="mailto:manuel.nuno.melo@gmail.com">manuel.nuno.melo@gmail.com</a>&gt; wrote:<br>
&gt; Dear biopython devs,<br>
&gt;<br>
&gt; I recently implemented in MDAnalysis a distutils/setuptools workaround<br>
&gt; (<a href="https://github.com/MDAnalysis/mdanalysis/pull/499" rel="noreferrer" target="_blank">https://github.com/MDAnalysis/mdanalysis/pull/499</a>) to the numpy<br>
&gt; dependency-at-setuptime problem, and I think biopython might benefit from<br>
&gt; it.<br>
&gt;<br>
&gt; The problem is that in setup.py distutils&#39; setup() must be provided a list<br>
&gt; of Extension objects, which in turn must contain the list of directories in<br>
&gt; which to look for include files (namely, numpy&#39;s).<br>
&gt;<br>
&gt; If numpy isn&#39;t installed the Extensions objects can&#39;t be instantiated. If<br>
&gt; numpy is specified as a setup-time dependency it will get installed when<br>
&gt; setup() is called, but the instantiation of the Extensions happens before<br>
&gt; the call to setup(). We get a cyclic dependency in that we need to know the<br>
&gt; path to the numpy install before calling the function that will install<br>
&gt; numpy.<br>
&gt;<br>
&gt; My solution was to subclass Extension to have a managed include_dirs<br>
&gt; attribute which only probes for numpy at install-time. Since by then setup()<br>
&gt; has had time to install numpy, all works fine.<br>
&gt;<br>
&gt; I believe a similar workaround could work well for biopython (although it<br>
&gt; might involve setting numpy as as hard requirement, or at least asking the<br>
&gt; user beforehand whether to install it).<br>
&gt;<br>
&gt; Of course, it would also benefit us at MDAnalysis since we could then<br>
&gt; cleanly depend on biopython without worrying whether its install is<br>
&gt; numpy-complete or not.<br>
&gt;<br>
&gt; I&#39;ll be glad with helping with the implementation, if you think it&#39;s worthy.<br>
&gt;<br>
&gt; Cheers,<br>
&gt; Manel<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; Biopython-dev mailing list<br>
&gt; <a href="mailto:Biopython-dev@mailman.open-bio.org">Biopython-dev@mailman.open-bio.org</a><br>
&gt; <a href="http://mailman.open-bio.org/mailman/listinfo/biopython-dev" rel="noreferrer" target="_blank">http://mailman.open-bio.org/mailman/listinfo/biopython-dev</a><br>
</blockquote></div><br></div>