setup.py에서 개인 종속성 링크를 처리하는 방법


10

직장에서 우리는 개인 pypi 서버를 사용합니다. 이 pypi 서버는 종속성 링크로 지정됩니다.

...
from setuptools import setup

config = ConfigParser.ConfigParser()
rc = os.path.join(os.path.expanduser('~'), '.pypirc')
config.read(rc)
dependency_links = [
    'https://{}:{}@<private_url>'.format(
        config.get('dc', 'username'), config.get('dc', 'password'))]

setup(
    dependency_links=dependency_links,
    ...)

이것은 대부분의 경우 잘 작동합니다. 그러나 얼마 전에 클라이언트 서버에 패키지를 설치해야했습니다. 이를 위해 .pypirc패키지를 설치하기 전에 유효한 파일을 복사해야했습니다 .

또한 위의 코드는 더러운 해킹처럼 느껴집니다.

자격 증명을 하드 코딩하지 않고 보안 종속성 링크를 지정하는 올바른 방법은 무엇입니까?


1
무슨 말인지 알 겠어 그것은 아니다 해킹 더러운, 그러나 당신이 당 패키지 단위로 의존성 관리와 인증을 결합하고 의미합니다. 이 접근 방식은 이식 가능하거나 확장 가능하지 않습니다.
Joel Cornett

답변:


1

이것은 합리적이고 더러운 해킹처럼 보이지 않습니다.

  1. 신임 정보에 대한 구성 파일이 있습니다
  2. 의존성에 사용자 정의 URL + cred를 삽입하는 방법이 있습니다

작업이 잘 이루어지고 있고 잘 이루어지고 있습니다. 이것을 더 잘 만드는 유일한 방법은 문서를 작성하여 여러 다른 설정이나 여러 pypi 서버에서 시도하고 그로 인해 발생하는 문제를 해결하는 것입니다.



0

이 솔루션을 사용할 때 매우주의하십시오. 설명서에 명시된 바와 같이 :

또한 EasyInstall과 같은 도구에서 .egg 파일을 설치할 때 사용할 수 있도록 계란의 메타 데이터에 기록됩니다.

즉, 자격 증명이에 배포됩니다 .egg. setuptools소스 코드 를 살펴본 결과 내부적으로는 easy_install종속성을 설치 하는 명령을 사용하고있는 것으로 나타났습니다 . 따라서 다음을 추가하면 setup.cfg개인 저장소가 선택됩니다.

[easy_install]
index_url=https://username:password@your.repo/simple

자격 증명을 설치할 때 터미널에 인쇄되는 snafu가 여전히 있지만 최소한 배포판에 들어 가지 않습니다. 이 솔루션 색인 URL을 대체 하므로 개인 저장소는 공개 URL을 미러링해야합니다. 나는 명백한 방법으로 인덱스 URL 을 추가하는 것을 지원하지 않았습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.