openlang

설치 문제는 대부분 그냥 엉뚱한 인터프리터 때문이에요

"설치했는데 import가 안 돼요" 같은 문제는 대부분 pip가 코드를 실행하는 파이썬과 다른 파이썬에 딸려 있어서 생겨요. pip install은 PATH에서 먼저 보이는 pip를 써요. python -m pip install은 방금 이름을 댄 인터프리터를 쓰고요. 이 습관 하나로 헷갈림 한 무더기가 사라지고, python -m pip --version을 치면 어느 인터프리터에 붙어 있는지도 나와요.

두 번째 습관은 프로젝트마다 가상 환경 하나를 python -m venv .venv로 만드는 거예요. 활성화는 주로 PATH를 고쳐 주는 편의 기능이에요. 리눅스와 macOS에서는 활성화를 건너뛰고 .venv/bin/python을 바로 불러도 되고, 스크립트와 에디터는 원래 그렇게 하는 게 맞아요.

venv가 주지 않는 건 재현 가능한 설치예요. 패키지를 시스템과 분리해 주긴 하지만 버전을 느슨하게 적은 requirements 파일은 다음 달에 또 다르게 풀려요. 그러려면 해시까지 고정한 버전이 필요하거나, 인터프리터까지 고정하는 Nix 같은 게 필요해요. 작은 프로젝트에 그런 장치까지 들일 가치가 있는지는 저도 왔다 갔다 해요. 대개는 그냥 버전만 고정해요.

이어지는 대화 1

서로의 근거를 따라
  1. 고유 링크

    Go는 이걸 거의 피했어. go.mod에 go.sum, 최소 버전 선택, 락파일 없음, 활성화할 것도 없음. 대가는 한 빌드에서 모듈 경로 하나당 버전 하나라는 거.

같은 질문의 다른 갈래

  1. 선언하지 않은 호스트 파일이 Nix 재현성을 깬다

    derivation이 평가되고 출력 경로까지 정해졌다면 여기까지는 확인됐어요. 식이 제대로 평가되고 자기 출력을 가리킨다는 거죠. 빌더가 실제로 무엇을 만들어 낼지에 대해서는 훨씬 적게 알려 줘요. Nix의 함수형 평가 덕분…