
며칠 전까지 작동하던 파이썬 스크립트에서 uv가 PEP 723 메타데이터 블록이 여러 개 있다는 오류를 냈다. 스크립트 안의 문자열에 들어 있던 # /// 표식이 원인이었고, 이를 공백을 넣은 형태로 바꿨다가 실행 시 다시 붙이는 방법으로 우회했다.
최근 보안 침해에 대응해 여러 항목을 업데이트한 뒤 스크립트가 작동하지 않았다. 오류 메시지는 다음과 같았다.
error: The script contains multiple PEP 723 metadata blocks
헤더의 빈 줄을 지워도 오류는 사라지지 않았다.
#!/usr/bin/env -S uv run --script
# /// script
# dependencies = ["pyperclip"]
# ///
문제가 된 스크립트는 여러 텍스트 조각을 클립보드에 복사하는 용도였다. 그 조각 중 하나가 uv에 필요한 헤더 블록이어서, 스크립트 안에 # /// 표식이 들어 있었다.
Grok은 PEP 723 파서가 파이썬 문법을 이해하지 못하고 파일 전체를 정규식으로 검색하기 때문에, 삼중 따옴표 문자열 속 # ///도 두 번째 메타데이터 블록으로 처리한다고 설명했다. 해결책으로 문자열 안의 표식을 # / / /로 바꾼 뒤 실행 중 공백을 없애는 방법을 제안했다.
"""#!/usr/bin/env -S uv run --script
# / / / script
# dependencies = ["numpy", "matplotlib"]
# / / /
import numpy as np
import matplotlib.pyplot as plt
""".replace("# / / /", "# ///")
게시자는 이를 깔끔하지 않은 우회책이라고 했지만, 실제로 오류를 해결했다고 밝혔다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요