[Distutils] Package in both setup_requires and install_requires will not be installed
Michael Hoffman
b3i4old02 at sneakemail.com
Sat Oct 13 22:26:07 CEST 2007
Phillip J. Eby wrote:
> At 12:42 AM 9/18/2007 +0100, Michael Hoffman wrote:
>> Michael Hoffman wrote:
>>
>>> If you specify a package in setup_requires it will be built in the
>>> current directory. But even if it is in install_requires as well, it
>>> won't be installed because the requirement is already satisfied at setup
>>> time by the package in the build directory.
>> I came up with this workaround:
>>
>>from setuptools.command.install import install
>> class SubprocessEasyInstall(install):
>> def run(self):
>> install.run(self)
>>
>> args = [sys.executable, "-m", "easy_install"] + setup_requires
>> check_call(args)
>>
>> And in the setup() call, ensure you include:
>>
>> cmdclass=dict(install=SubprocessEasyInstall)
>>
>> This will easy_install the setup_requires in a separate process which is
>> unpolluted by the distributions already downloaded during setup.
>
> Don't do this. It will do evil things if for example someone runs
> "setup.py install --help", or uses indeed any options or arguments to
> 'install' at all.
>
> It will also break the bdist_rpm, bdist_wininst, and other commands,
> which invoke 'install' as a subcommand, with various options set.
Would you like to suggest a better workaround? I'd rather avoid doing
this but the even consequences you outline are better to me than
``setup.py install`` failing to install the specified prerequisites.
Thanks,
Michael
More information about the Distutils-SIG
mailing list