문제의 원인
윈도우에서 생성한 가상환경을 리눅스에서 활성화하려고 할 때 발생하는 에러로 파일의 줄 끝 형식이 윈도우 형식(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)을 기대합니다.
오류를 분석해보면:
- command not found: 첫 번째 라인이 예상대로 파싱되지 않았음을 나타냅니다.
- 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 ./<가상환경이름>/
'정보 > py' 카테고리의 다른 글
Python Web Framework 2024 (1) | 2024.12.29 |
---|---|
flask debug 모드 (2) | 2024.11.18 |
ImportError: failed to find libmagic. Check your installation (0) | 2024.10.30 |
[E.1] http.client.RemoteDisconnected: Remote end closed connection without response (0) | 2023.07.29 |
[Django] Install Django on Unbuntu 20.04 LTS (0) | 2022.04.15 |