[PYTHON] Inclure le référentiel GitHub dans requirements.txt

Aperçu

English Comment inclure une bibliothèque qui n'est pas enregistrée dans PyPI mais qui est ouverte au public dans GitHub en tant que dépendance. De plus, un mémorandum des mesures à prendre lorsque «requirements.txt» est référencé à partir de «setup.py» est résumé.

requirements.txt Si l'URL du référentiel GitHub est https://github.com/rgmining/common requirements.txt contient

requirements.txt


-e git+https://github.com/rgmining/common.git#egg=rgmining_common-0.9.0

Écrivez comme ça. Après # egg =, il semble être au format - . Aussi, si vous utilisez pip-tools pour générer requirements.txt Entrez la même chaîne de caractères que ci-dessus dans requirements.in.

setup.py Jusqu'à présent, setup.py transmettait le contenu de requirements.txt à ʻinstall_requires` comme indiqué ci-dessous.

setup.py


from setuptools import setup, find_packages

def load_requires_from_file(filepath):
    with open(filepath) as fp:
        return [pkg_name.strip() for pkg_name in fp.readlines()]

setup(
    #Autres éléments omis
    install_requires=load_requires_from_file("requirements.txt")
)

Si requirements.txt contient une URL, améliorez-la un peu et ne listez que le nom du package.

setup.py


def take_package_name(name):
    if name.startswith("-e"):
        return name[name.find("=")+1:name.rfind("-")]
    else:
        return name.strip()

def load_requires_from_file(filepath):
    with open(filepath) as fp:
        return [take_package_name(pkg_name) for pkg_name in fp.readlines()]

Passez également la partie URL à l'argument de mot-clé dependency_link de la fonction setup.

setup.py


def load_links_from_file(filepath):
    res = []
    with open(filepath) as fp:
        for pkg_name in fp.readlines():
            if pkg_name.startswith("-e"):
                res.append(pkg_name.split(" ")[1])
    return res

setup(
    #Autres éléments omis
    install_requires=load_requires_from_file("requirements.txt"),
    dependency_links=load_links_from_file("requirements.txt"),
)

Avec ce qui précède, si vous utilisez python setup.py test etc., vous pouvez préparer un package à partir de GitHub et exécuter le test.

référence

Recommended Posts

Inclure le référentiel GitHub dans requirements.txt
Extraire chaque emplacement de Stargazers dans le référentiel Github
Installez le référentiel github avec pip
Pip installe le référentiel GitHub
Inclure "%" dans l'aide argparse pour mourir