FAQ 및 문제 해결

자주 묻는 질문과, 지금 아마도 마주하고 있을 그 오류.

"예전 노트북에서는 잘 됐는데, 새 노트북에서 protect/run이 실패해요"

기본적으로 암호화된 산출물은 이를 만든 머신에 잠겨 있습니다 — 새 머신으로 옮긴다고 잠금이 함께 옮겨가지 않습니다. 새 머신을 활성화하고(다음 protect/build 때 자동으로 이루어집니다) 그곳에서 다시 암호화하세요. 미리 제어할 수 없는 여러 머신에서 하나의 산출물을 실행해야 한다면, 대신 포터블 산출물을 사용하세요 — 코드 암호화를 참고하세요.

"산출물을 만든 바로 그 머신에서 VaultLockedError가 발생해요"

이는 머신의 식별 정보가 다른 기기처럼 보일 정도로 변경되었거나(대규모 OS 재설치, 일부 가상화/복제 환경 등), 로컬 볼트 파일이 이동되었거나 변경되었다는 뜻입니다. MagicLock이 왜 이 둘을 구분해서 알려줄 수 없는지는 보안 모델을 참고하세요. magiclock activate를 다시 실행해 머신을 재프로비저닝하세요.

"SDK를 설치하지 않고도 .pya를 실행할 수 있나요?"

실행하려면 magiclock이 설치되어 있어야 합니다(magiclock run app.pya) — 하지만 그 이상은 필요 없습니다. 계정도, 로그인도, 네트워크도 필요 없습니다. 배포한 앱을 실행하는 사람은 패키지만 설치하면 되며, 여러분과의 계정이 필요하지 않습니다.

"Python 3.12에서 빌드한 .pya가 3.13에서 로드되지 않아요"

예상된 동작입니다 — API 레퍼런스의 호환성 참고 사항을 확인하세요. 하나의 산출물을 여러 Python 버전에 걸쳐 사용하려 하지 말고, 새 인터프리터 버전에서 protect/build를 다시 실행하세요.

"구독이 만료되면 이미 배포한 앱은 어떻게 되나요?"

갱신할 때까지 새로운 암호화가 동작하지 않습니다 — magiclock protect/build는 구독 오류로 실패합니다. 이미 만들어서 배포한 산출물은 이전과 똑같이 계속 복호화되고 실행됩니다 — 복호화는 구독 상태를 확인하지 않습니다. 계정 및 활성화를 참고하세요.

"분실하거나 폐기한 머신은 어떻게 프로비저닝을 해제하나요?"

shell
magiclock deactivate   # run on the machine itself, or via the account portal

이는 시트를 해제하고 해당 머신이 계정 아래에서 새로운 것을 암호화하지 못하게 막습니다. 그 머신이 이미 만든 산출물에는 영향을 미치지 않습니다 — 이유는 계정 및 활성화를 참고하세요.

"CI에서 NotLoggedInError / NotActivatedError로 실패해요"

헤드리스 러너에서는 대화형 브라우저 로그인이 동작하지 않습니다. 계정 포털에서 토큰을 발급받아 비대화형으로 전달하세요.

shell
export MAGICLOCK_TOKEN=<token-from-your-account-portal>
magiclock protect app.py

계정 및 활성화를 참고하세요.

"네트워크가 전혀 없는 상태에서 protect/build가 실패해요"

마지막으로 성공한 확인 이후 암호화가 차단되기까지 12시간의 유예 창이 있습니다 — 계정 및 활성화의 표를 참고하세요. 온라인으로 성공적으로 활성화한 적이 한 번도 없다면 끌어다 쓸 유예가 없습니다 — 유예를 확보하려면 한 번은 연결하세요.

그래도 해결이 안 되나요?

실패한 명령을 --help와 함께 다시 실행해 사용 가능한 정확한 플래그를 확인하거나(magiclock protect --help 등), 계정 포털의 지원 채널을 통해 문의하세요.