증상
Windows 컴퓨터에서 Nuke 실행하려고 하면 일부 사용자는 지속적으로 충돌을 경험하고 다음과 유사한 오류 메시지가 명령 프롬프트에 나타납니다.
ImportError: DLL load failed while importing _ctypes: The specified module could not be found.
이 문서에서는 이러한 오류를 방지하기 위해 취해야 할 단계와 이러한 오류가 발생하는 이유에 대한 배경 정보를 제공합니다.
원인
현재 다음과 같은 프로그램으로 인해 DLL load failed while importing _ctypes 오류가 발생하고 Nuke 16 실행이 불가능할 수 있습니다. 단, 이는 전체 목록이 아니며, 다른 애플리케이션에서도 문제가 발생할 수 있습니다.
이 문제는 Nuke 의 Python 버전과 충돌하는 추가 "애플리케이션 경로"가 Windows 레지스트리에 추가되어 발생합니다. 이 문제는 지금까지 Nuke 16을 실행할 때만 보고되었지만, 다른 버전의 Nuke 에도 동일한 문제가 발생할 수 있습니다.
Python을 사용하는 타사 애플리케이션을 설치하면 Windows 레지스트리를 통해 Python 모듈 검색 경로( sys.path )에 자체 디렉터리가 추가될 수 있습니다. 애플리케이션의 Python 버전이 Nuke 에서 사용하는 버전과 동일한 경우, 이러한 추가 "애플리케이션 경로"로 인해 Nuke 실행에 필요한 Python 모듈에 접근하여 가져오지 못할 수 있습니다.
예를 들어, Spyder 6는 Nuke 16에서 사용하는 Python 3.11과 동일한 릴리스를 사용합니다. Spyder 6는 "애플리케이션 경로"를 가리키는 레지스트리 항목을 생성하기 때문에 Nuke 실행될 때 해당 위치에서 특정 모듈을 검색하고 찾을 수 없으면 실행되지 않습니다.
Windows 레지스트리 항목과 Python에 대한 추가 세부 정보는 추가 자료 섹션을 참조하세요.
해결
이 문제를 해결하는 데 사용할 수 있는 옵션은 문제를 일으키는 프로그램에 따라 다릅니다. 따라서 첫 번째 단계는 Nuke 의 Python 버전과 충돌하는 특정 프로그램을 확인하는 것입니다.
그렇게 하려면 아래에 설명된 프로세스에 따라 Nuke 16의 Python 실행 파일을 실행하고 현재 모듈 검색 경로를 출력하세요.
- 명령 프롬프트 창을 열고 다음 명령을 실행합니다.
"C:\Program Files\Nuke16.0v1\python.exe"
- 다음 두 줄을 실행하고 Enter 키를 두 번 눌러 코드를 완전히 실행합니다.
import sys
for p in sys.path: print(p)
- 이 시점에서 Nuke 에서 사용된 검색 경로가 인쇄되는 것을 볼 수 있습니다.
비교를 위해 Spyder 6을 설치한 경우의 동일한 출력은 다음과 같습니다.
참고 : 이러한 추가 강조된 경로는 수동으로 삭제하거나 편집해서는 안 되며, 대신 아래 옵션 중 하나를 사용하여 문제를 해결해야 합니다.
해당 프로그램을 파악한 후, 귀하의 요구 사항에 가장 적합한 다음 솔루션 중 하나를 선택하세요.
A) 응용 프로그램을 제거합니다
문제가 있는 애플리케이션이 설치되었지만 더 이상 필요하지 않은 경우 해당 프로그램을 제거하기만 하면 Nuke 성공적으로 실행됩니다.
B) 애플리케이션을 제거하고 최신 버전으로 업그레이드하세요.
그래도 프로그램을 사용해야 하는 경우 기존 버전을 제거하고 Nuke 의 Python과 충돌하지 않는 최신 릴리스로 업데이트하면 문제가 해결될 수 있습니다.
예를 들어, 최신 Anaconda3 릴리스에서는 Python 3.12를 사용하며, 이를 설치해도 Nuke 16의 실행에는 영향을 미치지 않습니다.
C) "애플리케이션 경로"를 정의하지 않고 애플리케이션을 다시 설치합니다.
버전을 업그레이드하지 않고도 프로그램을 사용해야 하는 경우, Anaconda3 및 MiniConda3 와 같은 일부 애플리케이션에는 Nuke 실행을 방해하는 "애플리케이션 경로"를 비활성화하는 설치 옵션이 있습니다.
Anaconda3 및 MiniConda3의 경우 이 옵션은 " {프로그램}을 기본 Python 3.11로 등록 "이라고 하며 Nuke 올바르게 실행하려면 비활성화해야 합니다.
Python 3.11의 기본값으로 정의하지 않고 Anaconda를 다시 설치하는 기본 단계는 아래와 같습니다. 하지만 구체적인 설정 이름은 애플리케이션마다 다를 수 있으며, 모든 프로그램에 이 옵션이 있는 것은 아니라는 점에 유의하세요.
i) 컴퓨터에서 응용 프로그램을 제거합니다.
ii) 프로그램 재설치를 시작합니다.
iii) 메시지가 표시되면 " {프로그램}을 기본 Python 3.11로 등록 " 옵션 상자를 비활성화합니다 .
D) Windows 레지스트리를 수동으로 수정합니다.
프로그램을 계속 사용해야 하지만 Windows 레지스트리에 "애플리케이션 경로"가 추가되는 것을 방지하는 옵션이 없는 경우 레지스트리를 조정하여 이러한 경로를 제거할 수 있습니다.
경고 : Windows 레지스트리를 잘못 변경하면 컴퓨터에 부정적인 영향을 미칠 수 있으므로 주의해서 변경해야 하며, Windows 레지스트리를 편집하기 전에 항상 백업을 생성해야 합니다. Foundry 컴퓨터의 모든 변경 사항에 대해 책임을 지지 않으며, 이러한 변경으로 인해 다른 애플리케이션이 제대로 작동하지 않을 수 있습니다.
Windows 레지스트리를 통해 컴퓨터 설정을 변경하는 것이 편리하고 계속 진행하려면 관리자 권한으로 다음 작업을 수행하세요.
i) 레지스트리 편집기를 열고 Computer\HKEY_CURRENT_USER\Software\Python\PythonCore 로 이동합니다. Computer\HKEY_CURRENT_USER\Software\Python\PythonCore ii) 3.11 하위 폴더를 확장하고 PythonPath 폴더를 선택합니다.
iii) 이 폴더를 마우스 오른쪽 버튼으로 클릭하고 이름 바꾸기 옵션을 선택한 다음 이름을 "PythonPath_Disabled"(또는 이와 유사한 이름)로 설정합니다.
iv) Nuke 16을 실행할 때 DLL 로드 실패 오류가 더 이상 나타나지 않습니다. 그렇지 않은 경우 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore 위치에서도 이 프로세스를 반복해야 할 수 있습니다.
추가 읽기
레지스트리 항목이 Python sys.path 어떻게 변경할 수 있는지에 대한 자세한 내용은 여기에서 Python 설명서를 참조하세요.
https://docs.python.org/3/using/windows.html#finding-modules
충돌하는 Python "애플리케이션 경로"를 제거한 후에도 여전히 어려움을 겪고 있다면 지원 티켓을 생성하여 발생한 정확한 문제와 취한 문제 해결 단계를 알려주시기 바랍니다.
지원 요청을 여는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.
우리는 문제로 불편을 끼쳐 드려 죄송합니다
이유를 알려주세요