2014-04-11 4 views
10

pip의 최신 버전은 사용자가 명시 적으로 --allow-external 옵션 (related answer)을 제공하지 않으면 패키지 파일을 PyPI에 업로드하지 않는 패키지를 설치하지 않았습니다.pip : 피할 수있는 해결 방법은 - 외부 - 외부입니까?

dirspec과 같은 라이브러리에 의존하는 패키지를 배포하고 싶습니다. 현재 내 패키지에 대해 다음 명령을 사용하여 패키지를 설치하도록 사용자에게 알려야합니다.

$ pip install --allow-external dirspec MyPackage 

라이브러리 패키징과 관련해서는 더 문제가됩니다.

$ pip install --allow-external dirspec TheirPackage 

이 situtation을 피하기 위해 어떤 해결 방법이 있습니까 : 내 패키지 라이브러리 인 경우 또한 다음 명령하여 패키지를 설치하는 사용자들에게 내 패키지에 의존하는 패키지의 저자 말할 필요?

답변

5

옳은 일은 당신의 프로젝트와 당신의 프로젝트를 담고있는 메가 타르볼에 요구 사항을 포함시키는 것입니다. 그러면 pip가 로컬 파일에서 기꺼이 설치됩니다.

6

보안 기능의 일시적 해결책을 요청하고 있습니다. 내 지식없이 외부 사이트에서 설치하는 것은 해로운 것으로 간주 될 수 있습니다.

대체 솔루션이있을 수 있습니다 : 해당 스위치없이 도달 할 수없는 필수 패키지에 대해 불평하거나 설치 코드에서 그러한 지시를 내리려고하는 pip에 의존하십시오. 그러나 두 번째 방법은 실제로 패키지가 의존성을 선언하는 경우 실패합니다. 핏은 먼저 외부 패키지를 설치하려고 시도하므로 setup.py에게 아무 말도하지 않아도됩니다. 패키지를 독립적으로 만들어야하고 setup.py에서 외부 사이트의 일부 패키지를 설치하는 지침을 인쇄해야합니다. 이것은 훨씬 더 복잡하게 들립니다.

그런 상황 (외부 패키지에 의존적 인)은 충분히 인기가있을 것입니다. 그 핍은 그러한 의존성을 해결하는 방법에 대한 충분한 힌트를 제공 할 것입니다.

EDIT : 현재 버전의 pip (1.5.4)로 설치를 테스트하면 스위치를 사용할 것을 제안하는 힌트가 있음을 알 수 있습니다. - use-external printed.

$ pip install gitlle 
Downloading/unpacking gittle 
..... 
Downloading/unpacking mimer (from gittle) 
    Could not find any downloads that satisfy the requirement mimer (from gittle) 
    Some externally hosted files were ignored (use --allow-external mimer to allow). 
Cleaning up... 
+1

--allow-external은 보안상의 해결책이 아닙니다. -pip는 여전히 외부 다운로드의 체크섬을 pypi에서 안전하게 획득 한 것으로 체크합니다. 반면에 OP가 - 허용되지 않는 - 확인되지 않음에 대한 해결 방법을 요구하면 실제로 보안 문제가 발생할 것입니다. 이 질문보기 : http://stackoverflow.com/q/21021326/42610 – liori