GitHub 리포지토리를 requirements.txt에 포함
개요
PyPI에는 등록되지 않았지만 GitHub에 게시 된 라이브러리를 종속성에 포함시키는 방법.
또한 setup.py
에서 requirements.txt
를 참조하는 경우의 대응 방법을 망비록으로 정리한다.
requirements.txt
GitHub 리포지토리의 URL이 htps : // 기주 b. 코 m / rg 미닌 g / 코몬이면,
requirements.txt의 경우,
requirements.txt-e git+https://github.com/rgmining/common.git#egg=rgmining_common-0.9.0
같이 쓴다. #egg=
이후는 <패키지 이름>-<버전>이라는 형식으로 하는 것 같다.
또한 pip-tools
를 사용하여 requirements.txt를 생성하는 경우,requirements.in
는 위와 동일한 문자열을 입력합니다.
설 p. py
지금까지 setup.py
에서는 아래와 같이 requirements.txt
의 내용을 install_requires
에 건네주었다.
setup.pyfrom 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(
# その他の項目は省略
install_requires=load_requires_from_file("requirements.txt")
)
requirements.txt
에 URL이 포함되어 있으면 조금 더 개선하여 패키지 이름 만 나열합니다.
setup.pydef 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()]
또한 URL 부분은 setup
함수의 키워드 인수 dependency_link
에 전달됩니다.
setup.pydef 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(
# 他の項目は省略
install_requires=load_requires_from_file("requirements.txt"),
dependency_links=load_links_from_file("requirements.txt"),
)
따라서 python setup.py test
와 같이 GitHub에서 패키지를 준비하고 테스트를 실행할 수 있습니다.
참고
GitHub 리포지토리의 URL이 htps : // 기주 b. 코 m / rg 미닌 g / 코몬이면,
requirements.txt의 경우,
requirements.txt
-e git+https://github.com/rgmining/common.git#egg=rgmining_common-0.9.0
같이 쓴다.
#egg=
이후는 <패키지 이름>-<버전>이라는 형식으로 하는 것 같다.또한
pip-tools
를 사용하여 requirements.txt를 생성하는 경우,requirements.in
는 위와 동일한 문자열을 입력합니다.설 p. py
지금까지 setup.py
에서는 아래와 같이 requirements.txt
의 내용을 install_requires
에 건네주었다.
setup.pyfrom 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(
# その他の項目は省略
install_requires=load_requires_from_file("requirements.txt")
)
requirements.txt
에 URL이 포함되어 있으면 조금 더 개선하여 패키지 이름 만 나열합니다.
setup.pydef 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()]
또한 URL 부분은 setup
함수의 키워드 인수 dependency_link
에 전달됩니다.
setup.pydef 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(
# 他の項目は省略
install_requires=load_requires_from_file("requirements.txt"),
dependency_links=load_links_from_file("requirements.txt"),
)
따라서 python setup.py test
와 같이 GitHub에서 패키지를 준비하고 테스트를 실행할 수 있습니다.
참고
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(
# その他の項目は省略
install_requires=load_requires_from_file("requirements.txt")
)
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()]
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(
# 他の項目は省略
install_requires=load_requires_from_file("requirements.txt"),
dependency_links=load_links_from_file("requirements.txt"),
)
Reference
이 문제에 관하여(GitHub 리포지토리를 requirements.txt에 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jkawamoto/items/32a57be3cf7b10c18d50텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)