automatically setting platform-dependent location for Distutils "install-scripts"?

Discussion in 'Python' started by jomorcsi@gmail.com, Aug 6, 2007.

  1. Guest

    Hello all,

    I am developing a Python-based tool that will be deployed both in a
    Windows and in a Linux
    environment, and I have a question concerning the use of the Distutils
    module to manage the
    installation of the tool in a transparent manner.

    A bit of background info:
    1. (I am using Python version 2.5)
    2. Let's assume that the tool is named "xyz"
    3. It is internally partitioned into two parts:
    xyzScript.py -- the front-end script that the users actually
    invoke, and
    xyzPackage -- a package containing the "guts" of the tool
    4. Users do not really care where the "xyzPackage" part is installed
    --
    and thus by default it will be installed into Python's standard
    "site-packages" directory.
    5. However, users *do* care where the "xyzScript.py" part is installed

    Now, I have created a Distutils-based "setup.py" script that looks
    like this:
    from distutils.core import setup

    >
    > setup(name='xyz',
    > version="1.0",
    > # provide other metadata, such as 'description', 'author', 'author_email', 'url', ... etc.
    >
    > packages=['xyzPackage'],
    >
    > scripts=['xyzScript.py'])
    >


    .... that takes care of the above concerns, and also accepts a
    "setup.cfg" configuration file that
    allows the user to control into which directory to install the
    "xyzScript.py" part, as follows:

    >
    > [install]
    > install-scripts=C:\xyzScriptDirectory
    >


    And thus, here is my problem:

    [1] At any given moment, the directory name specified in the above
    "setup.cfg" file
    can be either a "Windows-style" directory (as is shown above)
    or a "Linux-style" directory (say "/opt/xyzScriptDirectory"), but
    not both!

    [2] I would like to have a *single* "setup.cfg" file that can
    nevertheless be used for *both*
    Windows and Linux, *without* having to be edited by the user.

    For example, it would be really nice if I can have a customized
    "setup.cfg" file that looks like:

    >
    > [install]
    > install-scripts-Windows=C:\xyzScriptDirectory
    > install-scripts-Linux=/opt/xyzScriptDirectory
    >


    .... and then some part of Distutils can query "os.name" and set the
    "real" 'install-scripts' option
    to the appropriate one of these two choices.

    I assume this can be done by "overriding" and customizing part of
    Distutils.
    Indeed, I have already done something similar by overriding
    "distutils.command.build_scripts"
    to use a customized "copy_scripts()" method.

    However, it is not clear to me in what manner I can/should
    override "distutils.command.install_scripts" to achieve the effect
    that I desire.

    Is this at all the way to go, or might there be a totally obvious way
    to do this
    that I am currently overlooking?

    If anyone has similar experience in tweaking Distutils, I would be
    most appreciative of any
    advice that you can offer.

    Thanks in advance!
    , Aug 6, 2007
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. prabu
    Replies:
    1
    Views:
    815
    David Fraser
    Jul 2, 2004
  2. timw.google
    Replies:
    1
    Views:
    529
    Serge Orlov
    May 11, 2006
  3. Replies:
    0
    Views:
    1,285
  4. Mark P
    Replies:
    12
    Views:
    519
    James Dennett
    Jul 6, 2005
  5. puzzlecracker
    Replies:
    1
    Views:
    518
    James Kanze
    Aug 7, 2008
Loading...

Share This Page