git repo를 종속성으로 포함하도록 setup.py를 작성하는 방법
내 패키지에 대한 setup.py를 작성하려고합니다. 내 패키지는 다른 git 저장소에 대한 종속성을 지정해야합니다.
이것이 내가 지금까지 가지고있는 것입니다.
from setuptools import setup, find_packages
setup(
name='abc',
packages=find_packages(),
url='https://github.abc.com/abc/myabc',
description='This is a description for abc',
long_description=open('README.md').read(),
install_requires=[
"requests==2.7.0",
"SomePrivateLib>=0.1.0",
],
dependency_links = [
"git+git://github.abc.com/abc/SomePrivateLib.git#egg=SomePrivateLib",
],
include_package_data=True,
)
내가 실행할 때 :
pip install -e https://github.abc.com/abc/myabc.git#egg=analyse
나는 얻다
SomePrivateLib> = 0.1.0 (분석에서) 요구 사항을 충족하는 버전을 찾을 수 없습니다 (버전에서 :) SomePrivateLib> = 0.1.0 (분석에서)에 대해 일치하는 배포를 찾을 수 없습니다.
내가 도대체 뭘 잘못하고있는 겁니까 ?
여기 에서 올바른 방법을 찾을 수 있습니다 .
dependency_links=['http://github.com/user/repo/tarball/master#egg=package-1.0']
핵심은 git 저장소에 대한 링크가 아니라 tarball에 대한 링크를 제공하는 것입니다. Github는 /tarball/master
위와 같이 추가하면 마스터 브랜치의 tarball을 생성합니다 .
관통 파고 후 핍 문제 3939 위 후 코멘트에 @muon로 연결 PEP-508 사양 , 나는 통해 설치하는 내 개인의 repo 의존성을 받고 성공을 setup.py
이 규격 패턴을 사용하지 않습니다 install_requires
(더 이상 dependency_links
) :
install_requires = [
'some-pkg @ git+ssh://git@github.com/someorgname/pkg-repo-name@v1.1#egg=some-pkg',
]
은 @v1.1
github에서 생성 된 릴리스 태그를 나타내며 브랜치, 커밋 또는 다른 유형의 태그로 대체 할 수 있습니다.
불행히도 다른 답변은 가장 일반적인 사용 사례 중 하나 인 개인 저장소에서 작동하지 않습니다. 결국 setup.py
다음과 같은 파일로 작업하게되었습니다 .
from setuptools import setup, find_packages
setup(
name = 'MyProject',
version = '0.1.0',
url = '',
description = '',
packages = find_packages(),
install_requires = [
# Github Private Repository - needs entry in `dependency_links`
'ExampleRepo'
],
dependency_links=[
# Make sure to include the `#egg` portion so the `install_requires` recognizes the package
'git+ssh://git@github.com/example_organization/ExampleRepo.git#egg=ExampleRepo-0.1'
]
)
requeriments.txt 파일에서 정보를 얻으려면 좀 더 일반적인 대답입니다.
from setuptools import setup, find_packages
from os import path
loc = path.abspath(path.dirname(__file__))
with open(loc + '/requirements.txt') as f:
requirements = f.read().splitlines()
required = []
dependency_links = []
# do not add to required lines pointing to git repositories
EGG_MARK = '#egg='
for line in requirements:
if line.startswith('-e git:') or line.startswith('-e git+') or \
line.startswith('git:') or line.startswith('git+'):
if EGG_MARK in line:
package_name = line[line.find(EGG_MARK) + len(EGG_MARK):]
required.append(package_name)
dependency_links.append(line)
else:
print('Dependency to a git repository should have the format:')
print('git+ssh://git@github.com/xxxxx/xxxxxx#egg=package_name')
else:
required.append(line)
setup(
name='myproject', # Required
version='0.0.1', # Required
description='Description here....', # Required
packages=find_packages(), # Required
install_requires=required,
dependency_links=dependency_links,
)
ReferenceURL : https://stackoverflow.com/questions/32688688/how-to-write-setup-py-to-include-a-git-repo-as-a-dependency
'development' 카테고리의 다른 글
ReactJS : 자식 구성 요소에 배치 될 때 onClick 핸들러가 실행되지 않음 (0) | 2021.01.07 |
---|---|
Python Pandas equivalent in JavaScript (0) | 2021.01.07 |
TensorFlow 그래프에 if 조건을 추가하는 방법은 무엇입니까? (0) | 2021.01.07 |
VueJS v-for와 함께 계산 된 속성을 어떻게 사용할 수 있습니까? (0) | 2021.01.07 |
docker run -it 플래그는 무엇입니까? (0) | 2021.01.07 |