정보/py

Python 가상환경 activate: command not found

바다♬~♪ 2024. 11. 18. 20:09

문제의 원인

윈도우에서 생성한 가상환경을 리눅스에서 활성화하려고 할 때 발생하는 에러로 파일의 줄 끝 형식이 윈도우 형식(CRLF)으로 저장되어 있기 때문에 발생

 

오류 문장

source ./<가상환경이름>/Scripts/activate : command not found -bash: ./<가상환경이름>/Scripts/activate: line 4: syntax error near unexpected token $'{\r'' 'bash: ./<가상환경이름>/Scripts/activate: line 4: deactivate () { root@vmvsc:/mnt/c/dev/#

 

ChatGPT 4o 답변

source ./<가상환경이름>/Scripts/activate 명령어를 실행할 때 발생하는 오류는 파일의 줄 끝 형식이 윈도우 형식(CRLF)으로 저장되어 있기 때문입니다. WSL은 기본적으로 리눅스 환경이므로, 윈도우 형식(CRLF) 대신 리눅스 형식(LF)을 기대합니다.

오류를 분석해보면:

  1. command not found: 첫 번째 라인이 예상대로 파싱되지 않았음을 나타냅니다.
  2. unexpected token $'{\r': 줄 끝에 포함된 \r(캐리지 리턴, CR)이 리눅스 쉘에서 비정상적인 문법으로 간주됩니다.

이 문제는 Windows에서 생성된 파일을 리눅스 환경(WLS)에서 사용하려 할 때 종종 발생합니다. Python의 venv 모듈로 생성된 가상환경 스크립트는 Windows 환경에서는 CRLF 줄 끝을 사용하므로, 이 문제를 해결하려면 줄 끝 형식을 LF로 변환해야 합니다.

해결 방법

  • 줄 끝 형식을 LF로 변환
    아래 명령어를 사용하여 activate 파일의 줄 끝을 CRLF에서 LF로 변환합니다. 다음 명령어는 파일 내의 CR(\r)을 제거하여 LF로 변환합니다.
sed -i 's/\r$//' ./lecture-googlekaap/Scripts/activate

 

 

  • WSL에서 가상환경을 리눅스 형식으로 생성
    WSL 환경에서는 가상환경을 생성할 때 Windows 디렉토리가 아닌 리눅스 스타일 경로를 사용하는 것이 좋습니다. 다음 명령어는 리눅스 형식에 적합한 스크립트를 생성합니다.
python -m venv <가상환경이름>

 

  • 올바른 명령어 사용
    Windows에서 생성된 가상환경의 활성화 스크립트는 기본적으로 Scripts 디렉토리에 저장되며, 리눅스에서는 bin 디렉토리에 저장됩니다. 따라서 source 명령어로 가상환경을 활성화하려면 다음 명령어를 사용하세요
source ./lecture-googlekaap/bin/activate

 

 

  • 파일 변환 도구 사용 (선택 사항)
    편집기(예: VSCode)에서 파일을 열고 아래 과정을 따르세요:
파일 열기
하단의 "CRLF" 표시 클릭 → "LF" 선택
저장

 

추가 확인 사항

  • python 명령어가 올바르게 설치 및 연결되어 있는지 확인하세요.
python --version
  • 가상환경이 제대로 생성되었는지 확인하세요. bin 또는 Scripts 디렉토리가 포함되어 있어야 합니다.
     
ls ./<가상환경이름>/