[Distutils] Distutils and easy_install...
Douglas Mayle
douglas at mayle.org
Thu Apr 16 21:40:07 CEST 2009
Sorry, I meant to send this onlist. Reposting:
In the end, after some great suggestions and debugging help from Ian
Bicking, I managed to monkeypatch the monkeypatch to restore my
original script. I was using a hybrid approach (sometimes importing
distutils, sometimes setuptools) to avoid the script handling, but
with this workaround, I should be able just to switch back to
setuptools so that I don't have to think about it.
In my case, I have an install_script stub:
def install_script(self, dist, script_name, script_text, dev_path=None):
self.write_script(script_name, script_text, 'b')
And I then monkeypatch setuptools if it's loaded:
if sys.platform != 'win32' and 'setuptools' in sys.modules:
# Someone used easy_install to run this. I really want the correct
# script installed.
import setuptools.command.easy_install
setuptools.command.easy_install.easy_install.install_script =
install_script
You'll notice that I leave the patching alone on win32, because I
understand the desirability of having an exe file there...
Thanks,
Douglas Mayle
On Apr 16, 2009, at 2:32 PM, P.J. Eby wrote:
> At 01:03 PM 4/16/2009 -0400, Douglas Mayle wrote:
>> Hey everyone,
>> I'm having an annoying problem and I was directed here to
>> see if you
>> knew what could be done.
>>
>> I'm using distutils for my package instead of setuptools
>> because it's
>> a command line app, and the half second that setup tools adds to each
>> launch for pkg_resource scanning is unacceptable. I use the scripts
>> parameter, and it happily installs the script I expect and things are
>> running along. If I try to use easy_install to install the package,
>> however, (and more importantly, if a user of mine does) it seems that
>> setuptools is monkeypatching the distutils module and replacing
>> setup. This means that instead of just copying my script to bin,
>> setuptools is creating it's own script that does a pkg_resource scan
>> and then loads my script from the original location. Is there any
>> way
>> to ensure that I'm using the distutils.core.setup that I expect, and
>> not the one that setuptools monkeypatches into place?
>
> Use "easy_install -eb. MyPackage" to download the source (which will
> be placed in a 'mypackage/' subdirectory, then change to that
> directory and run "setup.py install" to install using distutils
> instead of setuptools.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20090416/83738339/attachment.htm>
More information about the Distutils-SIG
mailing list