Comment #3 on issue 2160 by asmeurer: List of dependencies http://code.google.com/p/sympy/issues/detail?id=2160
Well, if you ask around, you will find that people will agree that one of the nicest things about SymPy is that you can install it anywhere (indeed, run it anywhere, since you can run isympy without even installing) that Python is installed. So I do think that the base SymPy should be runnable without any further dependencies. I think our description on Google Code embodies at least most of the fundamental design principles behind SymPy:
"SymPy is a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries."
I myself was able to put SymPy on my jailbroken iPod touch just by installing a command line tool and the Cydia Python package. If it had some pure Python dependencies, this would have been more difficult (I didn't actually install it, I just installed git and cloned the repo), and if it had a compiled dependency, it would be just about impossible for me to do it.
Now, of course, we may want to optionally extend SymPy using other libraries. That is the whole point of this issue. For example, you can make the polys faster by installing gmpy. But you don't have to have gmpy installed to use SymPy, because it also has Python ground types that it can fall back onto. Another good example is plotting. I think soon we are going to remove Pyglet from SymPy and make plotting just work with various libraries that might be installed on the system, like matplotlib, pyglet, etc. If you don't have any of those installed, it will raise NotImplementedError (or whatever). But I don't consider plotting to be part of the base SymPy.
Or we might want to make a Cython core to speed up SymPy. But I think that even then we should make the core still work in pure Python, ideally by using @cythonize decorators that automatically fall back to plain Python if Cython is not installed.
In other cases, we might include a pure Python library in SymPy. That is what we are currently doing with mpmath and Pyglet. Of course, if we tried to reimplement mpmath, we would be in a real bind, because there is a lot of code there, and I don't think we have any developers who know half as much as Frederik about implementing a numerical package. But we just include it in SymPy and code our numerical evaluation to use it, and it all works fine. (As it were, the size of SymPy is not currently a design consideration).
-- You received this message because you are subscribed to the Google Groups "sympy-issues" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy-issues?hl=en.
