2014-09-29 2 views
8

conda 패키지의 경우, 패키지에 의존하는 패키지를 나열하는 방법은 무엇입니까?conda 패키지 부양 가족을 식별하는 방법은 무엇입니까?

저는 최근에 이미 MPI (openmpi) 버전을 보유한 대학 클러스터에 아나콘다를 설치했습니다. mpich2 패키지와 mpi4py 패키지가 anaconda와 함께 설치되어 mpi4py의 데모에서는 문제가 없었지만 mpi* 컴파일러 (mpicc 등)는 호환되지 않았습니다. 따라서 conda remove 'd mpich2mpi4py을 사용하고 pip을 사용하여 로컬 MPI 설치 및 컴파일러를 사용하여 mpi4py을 설치하십시오.

나는 mpi4py의 의존성을 발견하고 나서 mpich2의 부양책을 찾았습니다. 그 중 어떤 것에 대해서만 mpi4py을 확인했습니다. mpich2에 의존하는 것을 "쉽게"찾을 수 있습니까?

+0

귀하의 질문을 이해하는 데 필요한 MPI에 관한 귀하의 이야기를 분석하고 있습니까, 아니면 귀하의 첫 문장에서 다루고 있습니까? – duozmo

+3

@duozmo 개설문에 나와있는 내용이 맞 겠지만 올바른 질문을하지 않을 경우를 대비하여 내 질문에 대한 문맥을 제공하는 것이 좋습니다. – Yann

+0

문맥 제공에 반대하지 않습니다.그것은 단지 공정한 시나리오에 불과합니다. 그리고 저는 우리가 같은 질문을했는지 알아 내려고 많은 시간을 보냈습니다 (당신의 첫 문장). – duozmo

답변

5

패키지 캐시를 검색하면 이미 다운로드 한 패키지 만 표시됩니다. 귀하의 경우,이 동작은 문제가되지 않지만, 주어진 패키지에 의존하는 모든 패키지를 알고 싶다면 더 나은 방법은 채널의 repodata를 검색하는 것입니다. repodata는 ~/anaconda/pkgs/cache에 캐시되거나 브라우저로 http://repo.continuum.io/pkgs/free/으로 이동하고 사용하는 플랫폼에 대해 repodata.json을 클릭 할 수 있습니다 (Binstar의 경우 https://conda.binstar.org/asmeurer으로 이동). 그런 다음 "depends"키에서 패키지 이름을 검색하십시오.

+1

이 정보를 온라인으로 쉽게 확인할 수 있으면 좋을 것입니다. – astrojuanlu

16

conda infopackage cache이있는 디렉토리 (또는 디렉토리)를 알려줍니다. 이 디렉토리에는 각 패키지의 고유 한 디렉토리가 있으며 각 패키지 디렉토리에는 info 디렉토리와 index.json이라는 파일이 있습니다. 각 파일에는 requires 필드가 있으며 conda 종속성 목록을 참조합니다. 간단히 말해, 제거하려는 패키지에 대해이 파일을 검색해야합니다. 예를 들어

, anaconda 's이 (가) 내 홈 디렉토리에 설치, 따라서 패키지 캐시가 mpich2 찾기 위해, ~/anaconda/pkgs 인의 부양을 경우, 나는 것 :

grep mpich2 ~/anaconda/pkgs/*/info/index.json 

당신은 anaconda 2 개 라인을 볼 수 위의 requires 목록과 depends이라는 목록에 모두 mpich2입니다. 또한 각 패키지에 name 필드가 있으므로 사용 가능한 각 mpich2 패키지에 대해 한 줄씩 표시됩니다. 그런 다음 의존하는 각 패키지에 대해 하나 이상의 줄이 표시되며 mpich2이 필요합니다. 내 검색 결과는 mpi4py입니다.

이제 --dry-run 제거를 수행 할 수 있다고 생각했지만 remove은 종속 항목을 제거하지 않으므로 특별한 내용은 나와 있지 않습니다.

grep을 사용할 수 없다면, 모듈을 말하고 아마도 json을 사용하여 동일한 작업을 수행 할 수있는 파이썬 스크립트를 만들 수있을 것입니다.