[Python] How can I use git repos as dependencies for my PyPi package?

Discussão em 'Python' iniciado por Stack, Fevereiro 22, 2025.

  1. Stack

    Stack Membro Participativo

    I have a package which I'm pushing to PyPi and some of the depedencies are not packages, but installable git repositories. My requirements.txt looks like this

    sphinx_bootstrap_theme>=0.6.5
    matplotlib>=2.2.0
    numpy>=1.15.0
    sphinx>=1.7.5
    sphinx-argparse>=0.2.2
    tensorboardX
    tqdm>=4.24.0
    Cython>=0.28.5

    # git repos
    git+git://github.com/themightyoarfish/svcca-gpu.git


    Accordingly, my setup.py has this content:

    #!/usr/bin/env python

    from distutils.core import setup
    import setuptools
    import os

    with open('requirements.txt', mode='r') as f:
    requirements = f.read()
    required_pkgs, required_repos = requirements.split('# git repos')
    required_pkgs = required_pkgs.split()
    required_repos = required_repos.split()

    with open('README.md') as f:
    readme = f.read()

    setup(name=...
    ...
    packages=setuptools.find_packages('.', include=[...]),
    install_requires=required_pkgs,
    dependency_links=required_repos,
    zip_safe=False, # don't install egg, but source
    )


    But running pip install <package> does not actually install the git dependency. I assume that pip doesn't actually use the setup script. It works when I run python setup.py install manually.

    Edit:

    I also tried removing dependency_links and just using install_requires with the repository, but when installing my repository from GitHub (the project including the above files), I'm met with

    Complete output from command python setup.py egg_info:
    error in ikkuna setup command: 'install_requires' must be a string or
    list of strings containing valid project/version requirement specifiers; Invalid requirement, parse error at "'+git://g'"


    It has been suggested in other answers that one can put something like

    git+https://github.com/themightyoarfish/svcca-gpu.git#egg=svcca


    into requirements.txt, but that fails with

    error in <pkg> setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Invalid requirement, parse error at "'+https:/'


    Question: (How) Can I list git repositories as dependencies for a pip package?

    Continue reading...

Compartilhe esta Página