On Jul 12, 2009, at 6:24 AM, David Cournapeau wrote:
...
That relates to the "python needs to be a platform" idea.Taking again
the numpy/scipy case, I would love to get something like a robust
easy_install, where scientific toolboxes can be installed, queries,
uninstalled from pypi.
I don't understand what you mean by "queries, uinstalled from pypi".
Having our own 'python' for installation, would
make this much easier - but we loose what makes numpy/scipy so
attractive in the first place, that is using a lot of great packages
outside the numpy/scipy community.
Why would you lose anything? You can include any additional tools you
want.
Those two goals kind of contradict
with each other, I am not sure where the trade-off should be.
I'm not sure exactly what you mean, but I think this gets back to my
original point. Sometimes you want to provide people a robust
application that addresses a fixed set of use cases. Sometime you want
to provide a toolbox that allows people to address ad hoc problems.
In the later case, you will often trade off robustness for
flexibility. My impression is that numpy is often used as part of a
toolbox for ad hoc numerical analysis.
Maybe
python makes this impossible.
I doubt it has anything to do with Python.
I would be surprised if this problem were
limited to numpy/scipy.
Me too. For example, a database interface is useful both in closed
(from the users point of views) applications, and in open computing
toolboxes. The "system python" tends to be used like a open computing
platform for ad hoc computing and small scripts. It's not well suited
to supporting large applications. For ad hoc computing, the
flexibility that the system Python provides is very useful.
Applications need a lot more control and predictability than a system
Python can typically provide.
Really, many (I'd guess most) web developers who gravitate to
setuptools are drawn by the ability to express and manage
dependencies. They use tools like buildout or virtualenv that avoid
the pitfalls you mention above. I suspect you have more in common
with
us than you think. :)
I know about virtualenv, pip, yolk (much less about buildout). I even
use them sometimes (I never use setuptools outside a virtualenv, for
example). But I don't see how this solve the deployment problem. How
is
virtualenv useful for distribution of software to end users ?
Well, I'm more familiar with buildout. :) Buildout makes it
straightforward to control precisely the packages in your
application. A tool named zc.sourcerelease, let's you build a release
that contains a particular configuration of packages with an install
script that installs them. (This isn't limited to Python packages
either. It can include 3rd-party applications such as libraries,
database servers, etc. -- anything that's installed with a configure-
make-make-install dance.) This source release then becomes the basis
for an installer. We use it to create RPMs for our applications.
Because we use RPM, our applications can share a common "clean" Python
RPM that has what you'd get from a source install of Python. We don't
include Python in the application RPMs, although it would be pretty
easy to do so.
I think something like this is possible with pip/virtualenv. I could
be wrong.
On the
robustness side of things, I cannot say I am satisfied with the
solution
either. It is almost always workable, but not good enough for people
who
do not care much about programming (which I think is the case of a lot
of researchers/scientists). We have tons of user problems related to
installation/deployment issues.
I think buildout might help a lot. It doesn't give you an installer,
as that is very platform specific, but it gives you a starting point
to make building an installer pretty straightforward.
Jim
--
Jim Fulton
Zope Corporation
_______________________________________________
Distutils-SIG maillist - Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig