folks using linux care to chime in on whether they have similar issues when
installing dependencies in python or not? I tend to stay away from Windows
and have never used OS X (well, until the last few weeks at my current
gig). I find OS X to be a more classy environment that Windows but in many
ways even more restrictive. I have really never had any issues with 3rd
party library dependency management but then again I don't do scientific
computing. I generally use jython.org for most of what I do anyways.

my points regarding apt-get, maven, etc were just that other
languages/environments have found solutions which work fine for managing
transitive dependencies in general. I didn't mean to imply that you can use
them for managing dependencies in python or the native libraries that
python leverages.

in java land we generally just create a maven (or ivy or gradle - the new
coolness) config file and declare our immediate library dependencies in
there. The infrastructure then automatically determines the correct
transitive dependencies and downloads the correct versions of all the
necessary libraries. maven has other warts (xml config for one thing) but
the transitive dependencies part generally works rather well. And yes,
folks in the community have gone through the effort of setting up and
maintaining the infrastructure around all of this to ensure that it works
well and is freely available.

cheers,
-
Nimret Sandhu
http://www.nimret.org


On Fri, Jul 19, 2013 at 12:04 PM, James Thiele <[email protected]>wrote:

> You are totally spot on in your description of how hard it can be to
> install stuff. Years ago the first time I tried to install some Python 2.x
> version from source on OS X I ran into the problem that the filesystem is
> case insensitive. I've tried to install PIL at least 3 times and never got
> the dependecies right.
>
>
> On Fri, Jul 19, 2013 at 11:36 AM, Chris Calloway <[email protected]> wrote:
>
>> On 7/18/2013 9:24 PM, Nimret Sandhu wrote:
>>
>>> looking past the hubris in your email,
>>>
>>
>> Wow.
>>
>>
>>  you're talking about dependency
>>> management [DM] 
>>> (http://en.wikipedia.org/wiki/**Dependency_hell<http://en.wikipedia.org/wiki/Dependency_hell>)
>>> which
>>> exists in libraries, OSes and pretty much anywhere there is coupling
>>> between reusable code. It can be solved statically by linking against
>>> specific versions which work together but is a little more challenging
>>> to solve dynamically. There are tools in python to manage this though -
>>> http://www.pip-installer.org/ for compile time and
>>> http://www.virtualenv.org/ for runtime.
>>>
>>> java has maven, gradle, etc for compile time DM and tech like osgi for
>>> runtime DM. apt-get on *nix, ports on bsd are tools on OSes for
>>> addressing the same issues. They all work rather painlessly without
>>> 'ridiculous amounts of work'.
>>>
>>
>> This is well beyond dependency hell. It's compiler and linker options and
>> many other things. If you think pip solves these problems, then you haven't
>> tried to use pip to install the dependencies for ipython notebook on
>> Windows. And certainly haven't tried is across the wide variety of Windows
>> and Pythons brought into a classroom. These problems don't even start to
>> get addressed until the setup.py, and then only for the Python bits.
>>
>> If it wasn't a ridiculous amount of work, there wouldn't be a need for
>> prepackaged "sumo" distributions like Canopy or Anaconda. Comparing this to
>> apt-get and ports misses the point. With apt-get, you are sometimes able to
>> install some pieces of the Python scientific stack for the particular
>> system python that apt-get repo for that particular OS and OS version is
>> also managing. But that's rarely what anyone needs. It only works because
>> someone has already done the ridiculous amounts of work packaging binaries
>> for a particular narrow use case. pip gets from a generalized repo of
>> python source with setups that often run compilers and linkers in the case
>> of scientific packages.
>>
>> Virtualenv simply gives you a sandbox to play in to isolate at least the
>> Python parts of the ridiculous amount of work. The ironic thing about
>> pointing at virtualenv.org is that the first three points on the front
>> page under the installation section are version dependency warning.
>>
>>  see http://goo.gl/IzI1i
>>>
>>
>> The ironic thing about that link (a Google search for python pip
>> virtualenv scientific computing) is that the top two links are about the
>> problems pip and virtualenv have trying to install the Python scientific
>> stack.
>>
>> The first sentence in the first link was, "For whatever reason, it can be
>> a big pain to get python set up correctly on Mac OS X." Later on it goes on
>> to say, "Next is the tedious process of downloading and installing
>> packages. Unfortunately some of them do not play well with pip and need to
>> be built from the latest source code explicitly. Others simply take a long
>> time to build and you may want to avoid repeating the build when creating a
>> new python virtual environment. Still others don’t build well and need to
>> be installed using pip. Good times."
>>
>> The second link goes on about how, "Now, we would like to install
>> matplotlib, which is a 2-D plotting library for Python. Now Matplotlib is
>> not very friendly with pip/easy_install on many systems. So, we will
>> install from source."
>>
>>
>> --
>> Sincerely,
>>
>> Chris Calloway http://nccoos.org/Members/cbc
>> office: 3313 Venable Hall   phone: (919) 599-3530
>> mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599
>>
>
>
>
> --
> Some radio waves were modulated in the creation of this email.
>

Reply via email to