So fügen Sie eine Bibliothek ein, die nicht in PyPI registriert ist, aber als Abhängigkeit in GitHub für die Öffentlichkeit zugänglich ist. Darüber hinaus wird ein Memorandum mit Maßnahmen zusammengefasst, die zu treffen sind, wenn auf "require.txt" in "setup.py" verwiesen wird.
requirements.txt Wenn die URL des GitHub-Repositorys https://github.com/rgmining/common lautet Anforderungen.txt enthält
requirements.txt
-e git+https://github.com/rgmining/common.git#egg=rgmining_common-0.9.0
Schreiben Sie so. Nach # egg =
scheint es das Format pip-tools
verwenden, um die Datei require.txt zu generieren
Geben Sie die gleiche Zeichenfolge wie oben in "Anforderungen.in" ein.
setup.py
Bisher hat setup.py
den Inhalt von require.txt
wie unten gezeigt an install_requires
übergeben.
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(
#Andere Elemente weggelassen
install_requires=load_requires_from_file("requirements.txt")
)
Wenn require.txt
eine URL enthält, verbessern Sie diese ein wenig und listen Sie nur den Paketnamen auf.
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()]
Übergeben Sie den URL-Teil außerdem an das Schlüsselwortargument dependency_link
der Funktion 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(
#Andere Elemente weggelassen
install_requires=load_requires_from_file("requirements.txt"),
dependency_links=load_links_from_file("requirements.txt"),
)
Wenn Sie "python setup.py test" usw. verwenden, können Sie mit GitHub ein Paket vorbereiten und den Test ausführen.