Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Workbook 환경이 느리거나 시작되지 않을 때

환경 초기화와 변환 실행은 다른 단계입니다. 패키지 해석, 설치, 모듈 자원과 실행 중 라이브러리 호환성 중 어디에서 실패했는지 먼저 확인합니다.

사용자 지정 환경의 느린 초기화

환경을 바꾼 직후 느려졌다면 최근 변경을 되돌려 비교합니다. 패키지 하나가 추가되어도 많은 전이 의존성과 후보 버전이 생길 수 있습니다.

필요 없는 패키지를 제거하여 목적별로 작은 환경을 만듭니다. Python처럼 후보가 많거나 SciPy처럼 의존 그래프가 복잡한 패키지에는 버전 제약을 추가하여 탐색 범위를 줄일 수 있습니다.

너무 강한 pin은 설치 가능한 조합을 없앨 수도 있습니다. 예를 들어 python=3.12.1보다 python=3.12가 더 많은 patch 버전을 허용합니다. 실제로 지원하는 버전 범위 안에서 조정해야 합니다.

제약 없는 구성이 먼저 성공했다면 해석된 패키지 목록을 확인한 뒤 주요 패키지만 고정하는 방법도 있습니다. 사용자 지정 구성은 기본 프로필의 prewarmed module과 맞지 않아 새로 초기화해야 할 수 있습니다.

시작 로그 확인

초기화 오류 창의 로그에서 원인을 봅니다.

첫 줄의 Execution failed with non-zero exit code: 뒤 정수는 실패 유형을 구분하는 단서입니다.

Code 1

요청한 패키지와 의존성 일부가 서로 맞지 않거나 설치할 수 없는 경우입니다. 최근 환경 변경이 있다면 먼저 그 제약을 확인합니다.

현대 Mamba 메시지는 패키지의 의존 트리와 충돌을 표시합니다. 직접 요청한 두 버전의 충돌, 직접 의존 패키지의 제약 충돌, 더 아래에 있는 전이 의존성의 충돌을 구분합니다.

예를 들어 A가 B를, B가 C를 요구하면 A와 함께 별도로 고른 C의 버전이 충돌할 수 있습니다. 사용자가 C를 직접 요청하지 않았더라도 다른 패키지를 통해 여러 C 버전 제약이 모일 수 있습니다.

Mamba 메시지 읽기

문구의미와 확인할 내용
The following packages are incompatible환경의 패키지 제약이 충돌합니다. 아래에 표시한 의존 경로를 읽습니다.
The following package could not be installed필요한 패키지를 설치할 수 없습니다. 이어지는 부재나 의존성 설명을 확인합니다.
can be installed해당 후보만 보면 설치할 수 있습니다. 전체 환경이 성공한다는 뜻은 아니며 다른 후보와의 충돌은 아래에서 설명합니다.
no viable options제공된 버전 중 다른 요구와 동시에 맞는 후보가 없습니다. 배제 범위를 만든 제약을 완화합니다.
does not exist, perhaps a (typo or a) missing channel이름이나 버전 오타, 누락한 채널 또는 해당 채널에 없는 패키지를 확인합니다.
is installable and it requires설치할 수 있는 후보가 추가 의존성을 요구합니다. 그 아래의 조건을 따라갑니다.
is uninstallable because it requires아래에 나온 의존성 때문에 이 후보를 설치할 수 없습니다. 패키지 또는 의존성의 제약을 함께 봅니다.
is installable with the potential options선택할 수 있는 후보들이 있습니다. 각 선택이 도입하는 추가 제약을 확인합니다.
conflicts with any installable versions previously reported앞서 가정한 설치 가능 버전과 현재 요구가 충돌합니다. 같은 패키지에 적용한 직접 및 전이 제약을 대조합니다.
is missing on the system시스템의 virtual package가 없습니다. 예를 들어 CUDA 관련 패키지는 시스템의 __cuda 조건을 요구할 수 있습니다.
which cannot be installed (as previously explained)앞서 설명한 같은 충돌 또는 의존성 실패를 다시 참조합니다.

Python과 python_abi는 함께 움직이는 버전 조건으로 볼 수 있습니다. 임의의 ABI만 강제로 지정하는 대신 Python 버전과 해당 패키지의 지원 범위를 맞춥니다.

Legacy 메시지

이전 로그에서도 다음 메시지를 볼 수 있습니다.

메시지의미와 대응
Problem: nothing provides requested A.a.a.a채널에 요청한 A의 버전이 없습니다. 이름과 제공 버전을 확인하고 필요하면 pin을 완화합니다.
Problem: nothing provides B-b.b.b needed by A-a.a.a:A가 요구하는 B를 구할 수 없습니다. B는 직접 또는 전이 의존성일 수 있고 회수된 버전일 수도 있습니다. 다른 A 버전을 쓰거나 필요한 패키지의 제공을 요청합니다.
cannot install both X.a.b.c and X.d.e.f같은 환경에 X의 서로 다른 버전을 동시에 요구했습니다. 중복 제약을 정리합니다.
CondaService:ReadRepositoryPermissionDenied필요한 채널과 아티팩트의 접근 권한 및 해당 인스턴스의 제공 여부를 확인합니다.
Problem: package A-a.a.a requires B >=2.2.5,<2.3.0a0, but none of the providers can be installedB의 범위가 다른 요구와 맞지 않습니다. 사용자가 B를 직접 지정하지 않았더라도 전이 의존성을 조사합니다.

충돌 범위 좁히기

  1. 시작 로그의 STDOUT을 확인합니다.
  2. 패키지를 줄여 환경이 성공하는 최소 구성을 찾고, 다시 추가하여 충돌을 만드는 요구를 좁힙니다.
  3. 버전 pin을 완화하여 호환 후보가 생기는지 확인합니다.
  4. 별도 Workbook이나 브랜치에서 제약을 절반씩 나누어 비교하면 큰 환경의 원인을 더 빨리 찾을 수 있습니다.

항상 최신 버전만 모으기보다는 Spark, Python, NumPy와 Pandas 등 실제로 호환되는 조합을 유지합니다. 패키지 해석이 성공해도 제거된 API를 참조하는 라이브러리는 import나 실행에서 실패할 수 있으므로, solve 실패와 런타임 호환성 실패를 구분합니다.

Code 137과 메모리

초기화 중 Code 137은 대개 Spark 모듈에 필요한 메모리가 부족했을 때 나타납니다. 최근 추가한 패키지를 되돌리거나 불필요한 의존성을 제거합니다. 주요 패키지의 후보 버전을 제한하면 solver의 메모리 사용을 줄일 수 있습니다.

자원을 줄인 프로필로 바뀌었는지는 세션 비교에서 확인합니다. 필요한 패키지만 남기고 제약을 정리해도 계속 실패하면 수행한 조치와 로그를 포함하여 Palantir 지원팀에 요청합니다.

다른 오류 코드는 전체 로그를 확인합니다. 다시 시도해도 같은 실패가 발생하면 전체 오류 텍스트와 함께 지원을 요청합니다.

기본 프로필의 속도가 들쭉날쭉할 때

빠른 초기화는 prewarmed module을 받았거나 캐시된 환경과 일치했기 때문일 수 있습니다. 그렇지 않으면 Mamba solve와 설치를 새로 수행합니다. 많은 사용자가 동시에 Workbook을 열면 준비한 모듈을 소진하여 새 모듈을 기다릴 가능성이 커집니다.

초기화 최적화의 spec file, Conda Docker와 prewarming은 서로 다른 단계를 줄이므로 대기 문구와 캐시 상태를 함께 봅니다.

Conda 패키지와 JAR가 함께 필요한 경우

GraphFrames처럼 Python API 패키지와 Java 구현 JAR가 모두 필요한 라이브러리가 있습니다. 패키지만 설치하면 빌드 때 다음과 같은 오류가 나타날 수 있습니다.

o257.loadClass.: java.lang.ClassNotFoundException:<Class>

Control Panel의 프로필 구성에서 Conda Environment의 Advanced에 필요한 JAR를 추가합니다. 패키지 버전과 JAR가 호환되어야 하므로 둘을 함께 맞춥니다. 구성 권한이나 적절한 아티팩트를 확인하기 어렵다면 Palantir 담당자에게 요청합니다.

이전에는 성공했는데 지금 실패한다면 세션 이력과 임시 pin으로 요청, 실제 설치 버전과 자원을 비교한 뒤 영구 설정을 수정합니다.