At 11:01 AM 7/14/2006 -0400, Reid Ellis wrote:
I thought it would be better to allow easy_install to put the files
where they belong.

They "belong" wherever you want them to. ;) The location that they're put in by default is a default inherited from the distutils, that's inherited from Python -- and it's a crappy default on OS X and Windows. The default for other Unixes is usually $prefix/bin. (i.e., /usr/bin, /usr/local/bin, etc.)

EasyInstall's own documentation recommends that you change this to ~/bin on OS X:

http://peak.telecommunity.com/DevCenter/EasyInstall#custom-installation-locations


I was just hoping that in a .cshrc I could say
something like:

        set path=($path `python -c 'import setuptools; print
setuptools.path_to_scripts'`)

or in a .profile:

        export PATH="$PATH":`python -c 'import setuptools; print
setuptools.path_to_scripts'`

Unfortunately, it's not that simple. The path is computed via a chain of configuration files that's managed by stuff deep in the bowels of the distutils library. There is nothing that you can run that would get you the information without writing a new class to inherit from distutils stuff and do some rather complex things.


This way, if I get a new version of python or what have you, my path
is automatically changed to match without me messing with
configurations, etc.

The good news is, you don't have to. ~/.pydistutils.cfg is a per-user Python configuration file, and will be read by *any* version of Python.


I know there must be a way, since obviously
easy_install puts the files there.

I'll dig through the source and see what I can find.

Good luck. :) See the 'finalize_options()' method of the easy_install class in setuptools.command.easy_install. The bit that gets the default default, in the case where the script directory wasn't explicitly set on the command line or in easy_install's configuration files, is:

        self.set_undefined_options('install_scripts',
            ('install_dir', 'script_dir')
        )

This requests that the distutils set the default based on what the install_scripts command would use. You can then trace the inheritance tree to find that finalize_options() of install_scripts does a similar thing to inherit the install_dir option from --install-scripts of the 'install' command. You will then have to trace through some amazing logic in the distutils.command.install.install class that sets up the default default defaults. Welcome to the wonderful world of the distutils internals. :)

In short, I don't think you're going to find a simple way to just get a value that will be correct, without creating an easy_install command instance and asking it for its finalized options, so that this whole dark carnival of default-setting and config-file reading will take place.

The good news is, you could take a few seconds to set the default yourself, and know that easy_install will then always follow what you told it to.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "chandler-dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/chandler-dev

Reply via email to