2016-09-15 6 views
3

패키지를 개발하고 개발/테스트/etc 버전의 패키지를 로컬 devpi 서버에 업로드하고 있습니다. 제가 PyPi에 패키지를 업로드 할 마지막 준비가 경우에 대해 잘 작동하지만,--public이 업로드 명령에 전달되지 않는 한 PyPi로 패키지 업로드를 비활성화하는 방법

setup(..., 
     classifiers=[ 
     "Programming Language :: Python", 
     "Programming Language :: Python :: 2", 
     "Programming Language :: Python :: 2.7", 
     "Private :: Do not Upload" 
    ], 
    ...) 

: PyPi에 실수로 업로드를 방지하기 위해

, 나는의 일반적인 관행을 채택하고있어?

나는 보이는 설정() 호출 외부에서 전역 변수로 분류의 정의가 필요합니다 완전히 추한하지만, 간단한 해킹을 마련했습니다 같은 : 아마도

CLASSIFIERS = [ 
    "Programming Language :: Python", 
    "Programming Language :: Python :: 2", 
    "Programming Language :: Python :: 2.7" 
] 


if "--public" not in sys.argv: 
    CLASSIFIERS.append("Private :: Do Not Upload") 
else: 
    sys.argv.remove("--public") 

setup(... 
     classifiers=CLASSIFIERS, 
     ...) 

또 다른, 그리고 더 단순한 옵션은 단순히 "개인 정보 :: 업로드하지 마라."라고 말하면서 해킹보다 더 전문적인 것으로 보이지 않습니다. 내가 업로드 명령의 적절한 서브 클래스를 생성 할 일은 같은 을했던 것과

SafeUpload에게 전화가 --public cmd를 줄 옵션을 확인합니다. 아마도 업로드하기 전에 빌드가 존재할 수 있으므로 SafeBuild이 더 나은 옵션 일 수 있습니다.

불행히도 사용자 정의 명령 작성에 대한 setuptools 문서를 이해하는 데 어려움이 있습니다.

누구든지 구현 방법을 알고 있습니까? 사용자 정의 명령이 setup()으로 전달 된 매개 변수에 액세스 할 수 있는지, 즉 을 setup()으로 직접 조작 할 수 있는지 또는 명령 사용자가 CLASSIFIERS를 전역으로 정의하는 규칙을 따르도록 요구하는지 여부는 분명하지 않습니다. 변수 yuck?

답변