On Jul 10, 2009, at 7:39 AM, David Cournapeau wrote:
Jim Fulton wrote:
On Jul 10, 2009, at 1:21 AM, David Cournapeau wrote:
I think it is important that people who come from different
communities
participate to this: people who work on web development have
problems
which are mostly orthogonal to mine, but I get the impression that
most
people on distutils-sig fall in this category.
I don't think this perspective is reflective so much of web
development as of application development. Those of us who work on
web applications need to provide working applications, often with
hard
scalability and reliability requirements. We need to have control
over how our applications are assembled so we can test known
configurations and deploy them in a repeatable way. I think this
would
apply equally well to other sorts of applications.
From what I read on this ML and elsewhere, it seems that there is a
key
difference between 'webapp' and conventional applications deployment.
For webapp, the developer and the one who install is often the same
person, or at least a person with the same 'culture'. Normal
applications are targeted at end users and that makes for a lot of
difference.
I don't think that makes much difference wrt this discussion. See below.
On the end user side, .pth, eggs, sys.path hacks are a never-ending
source of troubles. For this reasons I am very skeptical about things
which encourage to install multiple, 'system-wide', packages,
because it
does not go into the right direction for the end-user IMO. Not in the
current state of python and its import system, at least.
I couldn't agree more. As an application developer, I want to deliver
complete self-enclosed applications. I think that's why many
application developers gravitate towards systems like buildout and
virtualenv/pip. In fact, the tendency of system Python's to be
customized by system packagers or system administrators often make the
unsuitable for supporting applications. When delivering applications
to be installed by end users, I try to include everything needed,
generally including Python. (I haven't been in this position for quite
some time.)
Controlling how the application is assembled, in which configuration
is
important - but it should not have consequences on other packages.
If an
application needs a very precise version of a given library, when
deployed, this library should not be visible to other packages IMHO.
Agreed.
It
would make a lot of issues easier: uninstall support, 'queryable'
system, etc... would stay tractable. Because with the current
situation
with eggs, sys.path hacks and co, I don't see how it is possible to
have
a reliable system which support uninstall and rollback. That's
already a
difficult enough problem as it is. Flexibility at this level is an
anti-goal.
Ironically, easy_install really doesn't meet the needs of application
developers, at least not without virtualenv for many of these same
reasons.
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. :)
Other folks are focussed on making libraries available to a large
audience of developers and sometimes even end users. For example, I
guess that numpy and a lot of related tools are often or usually used
in ad hoc one-off scripts for analysis of data.
Yes, but it is also used as a basis for applications as well. One of
the
thing I would really like to see is something ala cran (related to the
statistical software R), where people could, inside a numpy/scipy
environment, ask for a list of packages according to a list of
keywords,
install them and uninstall them reliably. Without the need to be an
admin on their machine. From this perspective, I think there are a lot
of common goals with people who use easy_install and co. But at
least I
am not satisfied with the current implementations and their lack of
robustness.
Buildout gives you this. I think pip with virtualenv might as well.
(Buildout tends to fall down when packages make assumptions about the
environment they're being installed into. Matplotlib has this
problem. I can't use it with a clean python. I have to use a Python
that has numpy installed first because matplotlib sniffs for numpy.)
Jim
--
Jim Fulton
Zope Corporation
_______________________________________________
Distutils-SIG maillist - Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig