발단
요즘 강화학습을 공부하느라 python으로 OpenAI의 gym 패키지를 이용해서 실습해보고 있었다.
그런데 Atari의 Pong 게임에 Deep Q-Network를 적용해보려고 했는데 gym이 제대로 import 되지 않는 것이었다.
알아보니 atari 모듈이 (공식적으로는) 윈도우에선 제대로 지원이 안되는 것이었다!
억지로라도 윈도우에서 쓰려면 다른사람이 customize한 atari 모듈을 설치하고, Visual Studio에서 약 4GB에 육박하는 c/c++관련 뭐시기를 깔아야 하고 등등... 뭔가 매우 귀찮아보였다.
그렇다고 멀쩡한 윈도우 노트북을 놔두고 맥을 살수도 없는 노릇. 결국 Windows Subsystem for Linux(이하 WSL)을 설치해서 써보기로 했다.
이를 위해 Linux를 상세히 알 필요는 없을거같고, Linux에는 python 환경 세팅정도만 해두고, 다른 작업은 VS code로 하면 될 터였다.
결과
처음엔 한 두시간정도 들여서 세팅하면 되겠지 싶었다. 하지만 컴공러가 아니라서 Linux에 대한 지식이 전무했던 나는 결국 거의 6시간을 매달려서야 환경 세팅에 성공했다.
나같이 Linux를 자세히 알 필요는 없지만(알고는 싶지만 시간이 없는), 필요에 의해 WSL에 Python 가상환경을 구성하고자 하는 사람들을 위해 이 글을 남긴다.
WSL 설치
제어판에서 설정하는 방법도 있지만 요즘 PowerShell을 잘 쓰고있었어서 PowerShell을 이용했다.
PowerShell을 관리자 권한으로 연 다음 아래 명령어를 입력한다.
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
이후 컴퓨터를 재시작한다.
재시작이 완료되면 작업표시줄의 돋보기 버튼을 눌러서 Microsoft Store에 들어간다.
들어가서 Ubuntu를 검색하면 한 세가지가 뜰텐데 그중에 18.xx버전을 설치한다.
20.04 버전도 있었으나, 내 윈도우 버전이 낮아서 18.xx버전으로 설치했다.
설치가 완료되면 ubuntu를 실행시키고, 계정 세팅을 한다.
계정세팅이 완료되면 아래를 입력하여 root 비밀번호까지 세팅한다.
sudo passwd
아래의 명령어를 입력해서 Ubuntu를 업데이트 해준다
sudo apt update # update 할 게 있는지 찾는다
sudo apt upgrade # update 할 것들을 설치한다
완료되면, code .
(code 띄고 마침표) 를 입력한다. 그럼 WSL에서 VS Code를 실행할 수 있도록 세팅이 이루어진다.
VS Code가 열리면 Remote - WSL 을 설치하겠냐고 묻는다. 그럼 Yes를 누른다.
만약 이 문구가 안뜬다면 extension 메뉴로 가서 설치해준다.
추가로, extension의 Python 모듈을 보면 'install on WSL' 이라는 문구가 활성화 되어있을 것이다. 이를 클릭하여 설치한 후 reload 한다. 그리고 일단 종료해준다.
여기까지 하면 일단 WSL 설치는 끝이다.
Python 가상환경 만들기
일단 난 Anaconda를 쓰지 않는다. 쌩 Python 기준으로 설명해본다.
Ubuntu 에서 내 작업환경을 저장할 폴더를 만든다. 나는 '내 문서' 폴더 하위에 workspace 폴더를 만들었다.
cd Documents
mkdir workspace
그리고 그 폴더로 이동한다.
cd workspace
Python 패키지 설치시에 필요한 pip와, 가상환경을 만드는데 필요한 virtualenv 패키지를 설치한다.
sudo -H pip install --upgrade pip
sudo -H pip install virtualenv
여기서 sudo -H
는 root권한을 이용하고, Home directory를 타깃으로 하라는 것 같다(확인요망).
이제 가상환경을 만든다. venv_name
에는 본인이 원하는 가상환경의 이름을 넣으면 된다.
virtualenv venv_name --python=python3.6
만든 가상환경을 activate 시킨다. 이후 pip를 업데이트하고, jupyter 커널을 추가하기 위해 jupyter도 설치해준다.
source venv_name/bin/activate # 가상환경을 작동시킨다
sudo -H pip install --upgrade pip
sudo -H pip install jupyter
pip install ipykernel
Jupyter kernel을 추가한다.
python -m ipykernel install --user --name venv_name
jupyter kernelspec list # kernel이 제대로 추가되었는지 확인한다.
venv
폴더에서 한단계 위인 workspace
폴더로 간 후, VS code를 실행한다.
cd ..
code .
테스트를 하기위해 hello.py 파일을 생성하고, 간단한 프로그램을 만든다.
print("hello, world!")
F5를 눌러 실행시켜본다. Python interpreter를 선택하라고 뜨면 아까 생성한 venv를 선택한다.
hello.ipynb 파일도 생성하여 Jupyter kernel이 잘 작동하는지도 확인한다.
모두 실행이 된다면 성공이다!
쉬워보이는데 삽질한 이유
- 처음에 시도했을땐 위에서
sudo -H
로 시작하는 부분에서 이를 제외하고 pip install 로 설치를 했었다. 그때문인지는 몰라도 virtualenv와 jupyter 설치가 제대로 되지 않아 가상환경 만들기도 안되고, kernelspec 같은 명령어도 먹지가 않았다.
- 패키지 설치 시 pip와 pip3 명령어를 혼용에서 사용한 까닭에 대혼란이 왔었다. pip로 설치해놓고 패키지가 로딩이 안되자 pip3 list 명령어로 패키지 리스트를 확인하니 패키지가 없다고 떠서 pip3 install 로 다시 설치를 시도하고 등등...
- pip는 python2.x 시절의 pip이고, Python3 부터는 pip3을 쓴다고 하는데, 컴퓨터에 Python3버전만 설치되어있다면 pip를 써도 무방하다. 난 앞으로도 2.x 버전을 쓸거같진 않으므로 다 pip로 통일했다. 그랬더니 잘되더라.
- 내가 뭔가를 잘못했는지, 가상환경 설치 폴더와 작업폴더가 한 폴더안에 있어야 kernel이 찾아지더라. 내 경우, workspace 폴더 안에 실제 작업을 하는
work
폴더와, 가상환경 생성시 만들어지는venv
폴더가 들어있다.work
폴더를 workspace 폴더가 아닌 다른 저 멀리있는 곳으로 이동시킬 경우 VS code가 가상환경의 interpreter를 찾지 못했다.
상기 이유들로 인해 계속해서 하나씩 지우고 다시깔아보고를 반복하다보니 시간이 엄청오래 걸렸다.
부디 많은 초보자들이 이 글을 보고 덜 헤메었으면 좋겠다.
혹시라도 제가 실수한 부분이 있거나, 개선될 부분이 있다면 댓글을 통해 알려주시면 감사하겠습니다!
'캐나다 대학원 > 공부' 카테고리의 다른 글
[Sentiment analysis] 감성분석으로 알아보는 성시경 vs. 장범준 (0) | 2022.10.20 |
---|---|
[2022.08.20] M2 맥북에어에 R + VS code 환경 세팅하기 (0) | 2022.08.21 |
[RL] 3. Value Functions (0) | 2020.07.07 |
[RL] 2. Multi-Armed Bandits Problem (0) | 2020.07.03 |
[RL] 1. Reinforcement Learning Overview & Terminology (0) | 2020.07.02 |