티스토리 뷰

리눅스 서버를 이용해 작업을 하다보면 가상환경 저장과 관리가 너무 복잡해지는 것을 막기 위해 주로 하나의 sudo 계정에서 가상환경을 만들고 나머지 작업자들은 각자의 계정에서 sudo계정의 env를 activation해서 사용하게 된다.

그러나 처음 가상환경을 사용해보는 사람들에게 또는 새롭게 시스템을 구축한 뒤 sudo 계정의 가상환경을 각 개인 계정에서 사용하는 방법은 상당히 헷갈린다.

나도 어제 새롭게 A6000서버를 설치하고, sudo 계정의 가상환경을 내 계정에서 사용할 수 있도록 하는 과정에서 약간의 문제가 있었기에 이것을 해결할 수 있는 방법을 적어둔다.

 

1. 일단 가장 큰 문제는 sudo 계정에서 conda create 등으로 생성한 가상환경이 conda env list를 통해 확인했을 때 sudo계정에서는 확인되지만 개인 계정에서는 확인되지 않는 것이었다.

 

먼저 Sudo 계정과 개인 계정에서의 conda info를 확인해보자.

왼쪽이 개인 계정, 오른쪽이 Sudo계정의 conda info

아래쪽에 빨간 박스 envs directories를 보자, 개인 계정의 envs directories는 현재 '/home/knu_hr/.conda/envs'이다. 쉽게 이야기하자면 개인 계정 내부의 conda아래에 설치된 envs 폴더에서 환경을 탐색한 뒤, 그 다음 /opt/conda/envs 폴더를 탐색한다. 

그러나 오른쪽의 sudo 계정의 envs directories를 보면 '/home/miruware/.conda/envs'로 sudo 계정 내부의 conda 아래 설치된 envs 폴더에서 탐색한 뒤, 없다면 다음으로 /opt/conda/envs를 탐색한다.

따라서, 개인 계정에서 아무리 conda env list를 통해서 sudo 계정 아래에 설치한 가상환경을 탐색해보려 해도 개인 계정에서는 sudo계정 아래의 envs 폴더를 탐색하지 않기 때문에 설치된 가상환경을 찾을 수 없다.

왼쪽이 개인 계정의 conda env list, 오른쪽이 sudo 계정의 conda env list

 

그러면 이제 문제가 명확해졌다. '개인 계정의 가상환경 탐색 경로에 sudo 계정의 가상환경 설치 경로가 포함되지 않았다.'

 

2. 그렇다면 해결 방법은 자연스럽게 2가지가 있다.

 

  • sudo 계정의 가상환경 설치 경로를 개인 계정의 가상환경 탐색 경로로 다시 지정한다.
  • 또는, 개인 계정의 가상환경 탐색 경로를 sudo 계정의 가상환경 설치 경로로 지정한다.

첫번째 방법은 추천하지 않는 방법이다. 일단 나는 sudo 계정의 가상환경 default 설치경로의 재지정 방법을 찾지 못했다. 그리고 찾고싶지도 않았다. 명심하자 리눅스 시스템에서 sudo계정의 default로 지정된 무언가를 잘 모른채로 건드는 것은 상당히 어리석은 짓이다. 그렇다면 두번째로 개인 계정의 가상환경 탐색 경로를 sudo 계정의 가상환경 설치 경로로 지정해주는 것이 현실적인 답변일 것이다.

 

각설하고 개인 계정으로 접속해서 다음 코드를 순차로 실행하자.

cd ~
vim .condarc # .condarc 텍스트파일 생성
### 아래 코드는 생성되는 vim 텍스트 파일에 붙여넣으세요
### 당연히 본인의 sudo 계정에 맞게 경로는 바꿔야 합니다.
### Sudo 계정 아래의 envs 설치 경로는 저와 다를 수 있습니다! 본인의 설치경로를 따라 작성하세요
envs_dirs:
    - /home/[YourSUDO_Account]/.conda/envs
###
esc누른 뒤 :wq입력해서 저장 후 종료

 

위 코드를 입력하게 되면 conda info에서 봤던 개인 계정의 envs directories(가상환경 탐색 경로)에 sudo 계정의 가상환경 설치 경로가 추가된다. 다시 conda info를 통해서 두 계정의 envs directories를 확인해보자.

왼쪽이 개인 계정의 conda info, 오른쪽이 sudo 계정의 conda info

 

잠시 스크롤을 위로 올려서 아까 보았던 envs directories와 비교해보면 개인 계정에 존재하지 않던 '/home/miruware/.conda/envs/' 경로가 envs directories에 추가로 생성된 것을 볼 수 있다. 이렇게 되면 개인 계정에서 가상환경을 탐색하는 경로에 sudo계정의 가상환경 설치 경로가 포함된 것이다.

 

3. 마지막으로 실제로 sudo 계정에서 생성하는 가상환경이 개인 계정에서도 확인되고, activation 가능한지 확인한다.

 

왼쪽이 개인 계정의 conda env list, 오른쪽이 sudo 계정의 conda env list이다.

실제로 이제 conda env list를 통해서 두 환경에서 동일한 결과가 출력되는 것을 볼 수 있고, 

 

개인 계정에서 sudo 계정아래에 설치된 moltrans라는 가상환경을 정상적으로 Activation 가능하며,

 

가상환경을 이용한 모델의 running 역시 정상적으로 실행되는 것을 볼 수 있었다.

댓글