On Wed, Jan 7, 2015 at 5:57 PM, Ondřej Čertík <[email protected]> wrote:
> On Tue, Jan 6, 2015 at 2:00 PM, Aaron Meurer <[email protected]> wrote:
>>
>>
>> On Tue, Jan 6, 2015 at 1:38 PM, Joachim Durchholz <[email protected]> wrote:
>>>
>>> tl;dr: Sergey's "unbundle mpmath" patches have created a substantial entry
>>> barrier for GSoC students (and people with similar low Python experience),
>>> and complicated the process of starting a debugging or test session.
>>> Also, I'm pretty p*ssed because I predicted exactly this, and got some
>>> dismissive non-answers instead of seeing the issues addressed.
>>>
>>>
>>> Full story:
>>>
>>>
>>> I have to say that my fears have fully become reality: The process of
>>> installing mpmath, while simple, isn't described in a way that "just works",
>>> and still invites subtle error.
>>>
>>> As a developer, I expect to be able to download the git repo and start
>>> working. Possibly after reading a README file.
>>>
>>> Okay, let's see how a new dev with little knowledge of Python and no
>>> knowledge of SymPy would fare...
>>>
>>> * README.rst is available. Fair enough.
>>>
>>> * It says "git clone" - okay, I just did that.
>>>
>>> * It sends me to http://docs.sympy.org/dev/install.html - erh, a detour.
>>> Let's put that aside, I haven't fully read the readme and don't even know
>>> yet that anything is missing.
>>
>>
>> Clearly this document needs to be updated.
>>
>>>
>>>
>>> * Okay, "Documentation and Usage", that sounds promising.
>>> Says "Everything is at" and another URL - also instructions for generating
>>> docs locally: cd docs; make html
>>> Oh. I'm getting this:
>>>
>>> Makefile:121: warning: overriding commands for target
>>> `_build/cheatsheet/cheatsheet.pdf'
>>> Makefile:116: warning: ignoring old commands for target
>>> `_build/cheatsheet/cheatsheet.pdf'
>>> rm -rf _build/logo
>>> mkdir -p _build/logo
>>> python ./generate_logos.py -d
>>> INFO:root: File saved: ./_build/logo/sympy-notail.svg
>>> INFO:root: File saved: ./_build/logo/sympy-notailtext.svg
>>> INFO:root: File saved: ./_build/logo/sympy-notext.svg
>>> ERROR:root:rsvg-convert: command not found
>>> make: *** [logo] Error 127
>>>
>>> OK, that's "just a detour" because I'm really after mpmath, not html, and
>>> I was able to ask Ubuntu what package I needed to get installed. However,
>>> this would add to the problems a new dev would have to overcome; maybe it's
>>> a good idea to list rsvg-convert among the required installs in the
>>> documentation building docs.
>>>
>>>
>>> The same goes for convert (from imagemagick).
>>>
>>> I'm giving up at sphinx-build since it does not have a Debian package.
>>> I suppose I can easily install it via a Python installer, a newbie might
>>> not know that.
>>
>>
>> The docs require a handful of things to build actually. We should document
>> this. sphinx-build is just part of sphinx.
>>
>>>
>>>
>>> So... no local docs, skipping that section. (Also, getting a bit
>>> frustrated.)
>>> (Taking off my newbie hat, I also didn't want to pursue that detour
>>> further. Maybe somebody else has more interest in getting the docs building
>>> instructions back on track.)
>>>
>>> * Now the "Usage" part of "Documentation and Usage"
>>> It says I should just start python and run a few import statements.
>>> ... aaand I'm getting this:
>>>
>>> $ python
>>> Python 2.7.6 (default, Mar 22 2014, 22:59:56)
>>> [GCC 4.8.2] on linux2
>>> Type "help", "copyright", "credits" or "license" for more information.
>>> >>> from sympy import Symbol, cos
>>> Traceback (most recent call last):
>>>   File "<stdin>", line 1, in <module>
>>>   File "sympy/__init__.py", line 37, in <module>
>>>     from .core import *
>>>   File "sympy/core/__init__.py", line 8, in <module>
>>>     from .expr import Expr, AtomicExpr
>>>   File "sympy/core/expr.py", line 7, in <module>
>>>     from .evalf import EvalfMixin, pure_complex
>>>   File "sympy/core/evalf.py", line 9, in <module>
>>>     import mpmath.libmp as libmp
>>> ImportError: No module named mpmath.libmp
>>>
>>> So okay, I bet the instructions are elsewhere, but somebody who just walks
>>> down the README.rst is hosed.
>>>
>>> As expectation had it, bin/isympy would fail with exactly the same error.
>>
>>
>> Maybe we should import mpmath at the top of sympy/__init__.py and raise an
>> ImportError with a better message.
>>
>>>
>>>
>>> * Oh, *now* there's an "Installation" section!
>>>
>>> * python setup.py install
>>> Which gives me this:
>>>
>>> running install
>>> error: can't create or remove files in install directory
>>>
>>> The following error occurred while trying to add or remove files in the
>>> installation directory:
>>>
>>>     [Errno 13] Permission denied:
>>> '/usr/local/lib/python2.7/dist-packages/test-easy-install-15567.write-test'
>>>
>>> There's a long explanation and a link... but it does not explain what to
>>> do with a "permission denied" situation. Luckily, I know that virtualenv
>>> helps (but it's still a pain because virtualenv is a pain for me, somehow
>>> I'm not finding a good way to set up shortcuts so I'm still forced to type a
>>> whole lot of incantations in each new shell window just to get into the
>>> virtualenv).
>>>
>>> Still. I'm not after almost 100 lines of writeup, with several problems
>>> along the way.
>>> Sergey said "it's easy" and "you should do your reading". Well, I did and
>>> it still isn't, it took me more than an hour to try all these things.
>>> Compared to the way before the unbundling, it's a big step backwards. I
>>> could simply download git repo, start bin/isympy or bin/test, and it all
>>> worked out of the box; now I have an odysseus tour through various
>>> procedures and problems (the writeup now nearing the 100-line mark), I have
>>> to know virtualenv, I have to organize my shortcuts, before I can start
>>> hacking... Sergey, this wasn't the finest thing to do, particularly for a
>>> change that never had a clear motive (except making life easier for
>>> packagers - heck no, sympy was standalone and worked well with that, and if
>>> somebody really ran into a library conflict, then, well, the conflict
>>> wouldn't go away by unbundling anyway, so what was the point???)
>>>
>>> Yeah, sorry for the rant.
>>> I'm not saying that unbundling libraries was misguided.
>>> But I'm really questioning the wisdom of unbundling the most critical
>>> library first. We should have done this with some other dependency. pep8.py
>>> comes to mind - it's not needed for running SymPy, and the tests that it is
>>> useful for are entirely optional, so that would have been a good testbed for
>>> trying out packaging and stuff.
>>>
>>> Ah well. Dropped eggs and all that.
>>>
>>> Fair warning: Given the way Sergey tried to talk me out of predicting
>>> exactly this kind of problem, and being somewhat down the nose about it as
>>> well, I'm having a very, very short fuse about this all.
>>>
>>> Regards,
>>> Jo
>>
>>
>> Most of these issues are general to the way Python handles dependencies and
>> packaging and not specific to SymPy or mpmath.  The ImportError is generally
>> the best error message you get when a package is missing. The permissions
>> issues are due to the way Python gets installed by the system in a place
>> that isn't user-writable. You either have to use sudo or know how to install
>> somewhere that is user-writable.
>>
>> Even so, I can guarantee that the following will work (once we do a
>> release):
>>
>> - Installing SymPy via Anaconda or conda will get the mpmath dependency.
>> - pip installing SymPy will get mpmath
>> - If you have setuptools installed, python setup.py install will download
>> and install mpmath, if it isn't installed already.
>>
>> The toughest situation will be for people who are developing on SymPy (i.e.,
>> they just clone the repo, without installing). They will need to know to
>> install mpmath, which requires better documentation and error messages.
>
> We should put step by step instructions for developers. I would be
> inclined to just put instructions using Conda, i.e. use Conda to
> install mpmath, then one can hack on sympy immediately. That way
> people can get started, and if they need a different setup, they can
> at least start with Conda and then go from there.

I am happy to contribute the pip / virtualenv instructions too.

Cheers,

Matthew

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAH6Pt5qmX2Xv%2BagAv6KW-_t3YEOwmpB3qH%2BzCun%3DfRa3gxfUxw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to