[Distutils] Package in both setup_requires and install_requires will not be installed

Phillip J. Eby pje at telecommunity.com
Sat Oct 13 15:19:37 CEST 2007


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.



More information about the Distutils-SIG mailing list