Can Pip install dependencies not specified in setup.py at install time?

后端 未结 3 1541
不知归路
不知归路 2020-12-12 20:04

I\'d like pip to install a dependency that I have on GitHub when the user issues the command to install the original software, also from source on GitHub. Neither of these p

3条回答
  •  眼角桃花
    2020-12-12 20:30

    Here's a small script I used to generate install_requires and dependency_links from a requirements file.

    import os
    import re
    
    def which(program):
        """
        Detect whether or not a program is installed.
        Thanks to http://stackoverflow.com/a/377028/70191
        """
        def is_exe(fpath):
            return os.path.exists(fpath) and os.access(fpath, os.X_OK)
    
        fpath, _ = os.path.split(program)
        if fpath:
            if is_exe(program):
                return program
        else:
            for path in os.environ['PATH'].split(os.pathsep):
                exe_file = os.path.join(path, program)
                if is_exe(exe_file):
                    return exe_file
    
        return None
    
    EDITABLE_REQUIREMENT = re.compile(r'^-e (?P(?Pgit|svn|hg|bzr).+#egg=(?P.+)-(?P\d(?:\.\d)*))$')
    
    install_requires = []
    dependency_links = []
    
    for requirement in (l.strip() for l in open('requirements')):
        match = EDITABLE_REQUIREMENT.match(requirement)
        if match:
            assert which(match.group('vcs')) is not None, \
                "VCS '%(vcs)s' must be installed in order to install %(link)s" % match.groupdict()
            install_requires.append("%(package)s==%(version)s" % match.groupdict())
            dependency_links.append(match.group('link'))
        else:
            install_requires.append(requirement)
    

提交回复
热议问题