[Anaconda] Powershell에서 아나콘다 가상환경 활성화가 안 되는 문제 해결하기
Introduction
파워쉘에서 아나콘다 환경을 사용하고 싶어 가상환경을 만들었는데, 만들기까지는 정상적으로 되지만 activate는 안 되는 요상한 현상을 발견했다.
결론부터 말하면 윈도우 계정 이름이 한글로 되어있어 아나콘다를 통한 파워쉘 프로파일 생성 도중 유니코드 경로가 깨지는 현상이 발생하는 것이였고, 이로 인해 파워쉘이 프로파일 위치를 제대로 찾지 못 해 문제가 생기는 것이었다. 프로파일의 경로를 제대로 수정해 주면 문제를 해결할 수 있다.
Solution
먼저 파워쉘을 관리자 모드로 실행시켜 주자.
파워쉘에서 아나콘다를 사용하려면 아래 명령어를 실행시켜 주어야 한다.
$ conda init powershell
그러면 위와 같은 아웃풋이 출력되는데, 잘 실행된 것 같지만 마지막 줄의 프로파일 생성 결과를 보면 경로 일부가 깨져 있는 것을 볼 수 있다.
이 상태에서는 명령대로 파워쉘을 재시작하고 아나콘다 환경을 실행하려 해도, 아무 일도 일어나지 않는다. 또한 실제로 잘못된 경로로 파워쉘 프로파일이 생성되어 있다.
그리고 파워쉘에서 아래 명령어를 실행해 False 가 출력되는 것을 확인하자.
$ test-path $profile
이제부터는 제대로 된 위치에 제대로 된 프로파일이 놓이도록만 하면 문제가 해결된다.
먼저 아래 명령어를 실행해 제대로 된 위치에 새로운 파워쉘 프로파일을 하나 생성하자.
$ new-item -path $profile -itemtype file -force
이 이후에는 $ test-path $profile 명령어가 True를 반환하지만 아직 문제는 해결되지 않는다. 새로 생성된 프로파일에는 conda init powershell 을 수행하면서 작성되는 내용이 포함되어 있지 않고 텅텅 비어있기 때문이다.
따라서 우리는 이전에 잘못 생성된 프로파일을 열어 그 내용을 새 프로파일에 복사해 주어야 한다.
아까 본 깨진 경로로 들어가 conda에 의해 생성된 프로파일을 텍스트 에디터로 열고, 내용을 복사해 가자.
#region conda initialize
# !! Contents within this block are managed by 'conda init' !!
If (Test-Path "C:\Resources\Anaconda3\Scripts\conda.exe") {
(& "C:\Resources\Anaconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | ?{$_} | Invoke-Expression
}
#endregion
내용은 보통 위와 같은 형태로 생겼는데, 환경마다 경로가 달라 그대로 사용할 수는 없을 것이다.
복사한 내용을 아까 생성한 프로파일 파일에다가 그대로 붙여넣기 해 주자. 새 프로파일의 경로는 이전에 프로파일을 생성할 때 출력된 내용에서 찾을 수 있다. 참고를 위해 같은 사진을 다시 가져왔다.
디렉터리: 부분에 경로가 적혀 있다.
해당 파일을 찾아 그대로 붙여넣자.
저장 후 파워쉘을 재시작하면 뭔가 느낌이 다르다. 이전과 다르게 프로필 로드 시간을 알려주고 있다. 프로파일을 제대로 찾아 conda init 을 실행하게 되면서 발생하는 현상이다.
이 이후에는 conda activate 명령어가 잘 실행된다.
Conclusion
사실 한참 검색해도 다른 뜬구름 잡는 소리만 있어서 포기할까 하다가, 포기하고 아나콘다 프롬프트를 사용하자니 폰트가 너무 구린 관계로 다시 한참 잡고 있다 겨우 해결했다..... 다른 사람들에게도 도움이 되면 좋겠다.