aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/command/install.py
blob: c555e7e0353ed3c6470876e5a67cbef48bb38a9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import setuptools, sys
from distutils.command.install import install as _install

class install(_install):
    """Use easy_install to install the package, w/dependencies"""

    def handle_extra_path(self):
        # We always ignore extra_path, because we always install eggs
        # (you can always use install_* commands directly if needed)
        self.path_file = None
        self.extra_dirs = ''

    def run(self):
        calling_module = sys._getframe(1).f_globals.get('__name__','')
        if calling_module != 'distutils.dist':
            # We're not being run from the command line, so use old-style
            # behavior.  This is a bit kludgy, because a command might use
            # dist.run_command() to run 'install', but bdist_dumb and
            # bdist_wininst both call run directly at the moment.
            # When this is part of the distutils, the old install behavior
            # should probably be requested with a flag, or a different method.
            return _install.run(self)

        from setuptools.command.easy_install import easy_install
        cmd = easy_install(
            self.distribution, args="x", ignore_conflicts_at_my_risk=1,
            root=self.root
        )
        cmd.ensure_finalized()  # finalize before bdist_egg munges install cmd

        self.run_command('bdist_egg')
        args = [self.distribution.get_command_obj('bdist_egg').egg_output]

        if setuptools.bootstrap_install_from:
            # Bootstrap self-installation of setuptools
            args.insert(0, setuptools.bootstrap_install_from)

        cmd.args = args
        cmd.run()
        setuptools.bootstrap_install_from = None