윈도우에서 ICON 개발환경 구축하기-2

nanaones
B!ock.Chain
Published in
16 min readMay 8, 2019

Pycharm PRO + Docker ToolBox 혹은 VSCode insider + Docker Desktop 구성으로 접근하기

작성자가 흘린 눈물의 온기가 남아있는 글 입니다. 

목차

  1. Windows에서 Pycharm + Docker ToolBox 로 ICON 개발환경 만들기
  2. 망한것 수습하기 / 외않된데? /문제를 해결하기 위한 눈물의 삽질
  3. Windows에서 VSCode insider + Docker Desktop Windows 로 ICON 개발환경 만들기

저의 이전글 에서는 WSL을 활용한 윈도우 개발 환경 설정에 대해서 다루어보았습니다.

파이참을 WSL 내에 설치하고, 이를 윈도우에서 XWindow 로 실행하는 방법을 사용하였습니다.

지난글을 두 줄로 요약하자면,

장점 : Windows에서 ICON 개발환경을 구축할 수 있다.

단점: 사실 별거 아닌척 했지만 켤게 많고 굉장히 귀찮다.

Docker 켜야하지,

WSL 켜야하지,

Xming 켜야하지

파이참 켜야하지…

기본적으로 JDK를 설치해야하서, 설치하지 않았을경우에는 에러가 나기도 하고, (소중한 후기가 … )[링크]

파이참이 처음에 깔렸을때 인터프리터를 설정해 주어야 하는데, 이부분에서 갑갑한 경우도 있습니다.

그렇게 귀찮은 설정들을, 파이참 유료버전(프로페셔널)과 함께라면 간단하게 할 수 있습니다.

이번글은… 사실 회사에서 파이참을 사줘서… 가능했던 글 입니다.

감사합니다. (고용)주님….
반짝반짝 빛나는 프로페셔널

왜 프로버전을 받고 난 다음에서야 글을 쓸 수 있었나?

프로가 아닌 커뮤니티 버전에서는 외부 인터프리터를 사용할 수 없습니다.
하지만, 프로버전에서는 외부 인터프리터를 통한 개발이 가능합니다.

파이참에서 Docker 의 인터프리터를 사용하기 위해서는,

1. Docker ToolBox설치

2. Windows Hyper-V 옵션 끄기 (재부팅하여야 합니다.)

사전작업을 진행해야 합니다.

Docker 페이지에 가서

Docker Tool Box를 다운로드 받습니다.[링크]

설치 완료하고 실행해 보면 Hyper-V를 끄라고 협박합니다.
Hyper-V의 사용 여부는 작업관리자에서 확인 가능합니다.

끄는 순서는 아래 순서대로 진행하시면됩니다.

  1. 시작 → “Windows 기능 켜기/끄기” 검색
  2. Hyper-V 체크해제
  3. 재부팅
  4. Hyper-V 옵션 꺼진것 확인(기능 켜기/끄기)

시작 → “Windows 기능 켜기/끄기” 검색

Hyper-V 체크해제

Hyper-V 옵션 꺼진것 확인(기능 켜기/끄기)

다시 실행하면 잘 됩니다.

Docker 에서 ICON 에서 배포한 T-Bears이미지를 사용,

컨테이너를 띄웁니다.

띄웠습니다.

명령어는

docker run -it --name tbears -p 9000:9000 -v /c/LOCAL_VOLUME:/CONTAINER_VOLUME iconloop/tbears:1.1.0.1

-v 옵션을 통해서 원하는 폴더를 컨테이너에 붙일 수 있습니다.
이를 통해 Docker 컨테이너에서 해당 폴더에 파일을 만들면,
로컬에서도 반영이 되고, 반대 상황 또한 같이 적용됩니다.

ICON에서 배포한 T-Bears 컨테이너는 지금(2019년 5월 8일)
기준 최신버전인 1.1.0.1버전을 받았습니다.

여기까지 아무 문제 없었으면,

Pycharm에서 Docker를 연결합니다.

문제가 있었으면… 나는 몰라요… 가 아니고 도와드립니다. 댓글남겨주세요.

그 다음 진행순서는 아래와 같습니다.

  1. Setting(Ctrl + Alt + S )에서 docker 탭에서 Docker 머신을 만들어줍니다.
  2. Setting(Ctrl + Alt + S )에서 interpreter 탭 → add 클릭합니다.
  3. Docker를 선택하고, 컨테이너 이름이 “tbears” 인 것을 확인하고 선택합니다.
  4. 결과를 확인합니다.

Setting(Ctrl + Alt + S )에서 docker 탭에서 Docker 머신을 만들어줍니다.

Setting(Ctrl + Alt + S )에서 interpreter 탭 → add 클릭합니다.

Docker를 선택하고, 이름이 “tbears” 인 것을 확인하고 선택합니다.

--name tbears 

위와같은 옵션을 주었기때문에 tbears인 것을 확인했습니다. 만약에 컨테이너에 다른 이름을 설정하셨다면, 그 이름을 확인하시면 됩니다.

결과를 확인합니다.

문제없이 잘 되는 화면입니다.

이걸로 오늘의 글을 마칠수 있었습니다.

근데 잠깐 소리지를 일이 생겨서 소리좀 지르겠습니다.

왜안대 왜왜왜왜왜왜ㅐ왜왜ㅗ애ㅗ애ㅗ애ㅗ애ㅗ오

위 가이드대로 설치가 완료되면,

자동완성 기능을 기본으로 사용할 수 있어야하는데,
자동완성도 되지 않거니와…. 필수적으로 사용해야할 iconsdk 모듈을 인식하지 못했습니다.

망했어요…

깔끔하게 끝날 줄 알았는데…

저에게 치명타를 준 … 에러라기엔 모호한 친구.

파이참 프로그레스바를 확인했더니….

위 사진과 같은 상태가 계속 유지되고있었습니다.
구글링 해 보니, 몇몇의 사람들이 겪는 문제였습니다.

https://youtrack.jetbrains.com/issue/PY-29757

그러게…

문제를 해결하기 위한 눈물의 삽질

그냥 포기할 수는 없었습니다.

  1. 여러번 껐다가 켜기 → 어림도 없답니다…
ㅎ2

2. Jetbrain에서 제공하는 Jetbrains ToolBox를 설치해서 최대 메모리 힙사이즈를 늘려보기(기본 750MB → 2048MB)

어림없대
ㅎ2

3. 다 될 때 까지 기다리기

30분 초과 → 그래, 그럴 수 있지

1시간 경과 → ??????? (30%도 진행되지 않았습니다.)

1시간1분 경과 → 이거 근데 도커 컨테이너 연결 할 때 마다 이래야 하는거 아닌가..?

으아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ

글을 여기까지 쓸까… 하다가

다음 링크와 같은 내용을 찾아냈습니다.

VSCode insider 버전에서 Remote Development를 지원한다는 소식이 있었습니다.

일단, 위의 가이드대로 다시 진행하기로 합니다….

순서는 아래와 같습니다.

  1. Docker Desktop Windows 설치
  2. Docker Desktop Windows를 설치하기 전에,
    Docker Toolbox 를 삭제해줘야합니다. ^^
  3. ICON T-Bears 이미지 다운로드 & 띄우기
  4. hyper-V 옵션 켜기
  5. VSCode insider 설치
  6. Plugin 설치
  7. 연결하기

Docker Desktop Windows 설치

위 링크에서 다운로드 받습니다.

insider 버전은 일반 VSCode와는 다르게, 로고가 초록색입니다.

Docker Desktop Windows를 설치하기 전에,
Docker Toolbox 를 삭제해줘야합니다. ^^

혹시, 이전 파이참 프로버전을 통한 설정을 진행하지 않으셨거나, Docker ToolBox를 설치하지 않으신분은 이 부분을 건너뛰어주세요.

ㅂㅂ2
잘가라

삭제를 진행하고 나서도,
제대로 Docker Desktop Windows 설치 혹은 실행이 되지 않는 경우가 있습니다.

원문 출처 :

그럴때는

  1. 사용자의 환경변수 안에 있는 DOCKER_* 이라고 시작하는
    환경변수를 모두 지워주세요
환경변수

2. PowerShell을 열고, 아래 명령어를 실행해 주세요

[Environment]::SetEnvironmentVariable("DOCKER_CERT_PATH", $null, "User")

[Environment]::SetEnvironmentVariable("DOCKER_HOST", $null, "User")

[Environment]::SetEnvironmentVariable("DOCKER_MACHINE_NAME", $null, "User")

[Environment]::SetEnvironmentVariable("DOCKER_TLS_VERIFY", $null, "User")

[Environment]::SetEnvironmentVariable("DOCKER_TOOLBOX_INSTALL_PATH", $null, "User")

3. PowerShell을 껐다가 켜주세요(컴퓨터를 껐다가 켜는걸 추천합니다.)

ICON T-Bears 이미지 다운로드 & 띄우기

사용할 T-Bears 컨테이너를 띄워야겠죠?

위에서 이미 Docker ToolBox를 사용해서 컨테이너를 이미 띄우셨어도 똑같이 하셔야합니다. 우리 그거 지웠잖아요 ^___^

명령어는

docker run -it --name tbears -p 9000:9000 -v /c/LOCAL_VOLUME:/CONTAINER_VOLUME iconloop/tbears:1.1.0.1

hyper-V 옵션 켜기

위에 있는 끄기… 의 반대로 진행해 주시면 됩니다.

근데 얘도 컴퓨터를 껐다가 켜야합니다….

VSCode insider 설치

insider 버전을 설치해야합니다.

다시 한 번 말씀드리지만, insider 버전은 초록색입니다.

로고가 초록색입니다.

설치하면 볼 수 있는 아름다운 자태

Plugin 설치

Remote Development Plugin을 Marketplace에서 설치합니다.

연결하기

왼쪽 맨 하단에 있는 녀석을 클릭해주면,

빨간 상자가 뜹니다.

Remote - Containers: Attach to Running Container...

를 클릭합니다.

T-Bears 컨테이너가 잘 돌아가고 있을 경우,

아래같이 뜨게됩니다.

성공적으로 연결하였으면 화면 하단 꺽쇠 옆에

Attached Container : *****

이라고 뜹니다.

아까 누른 버튼 옆에, Attached 라고 뜨면 성공

여기서 Open Folder 를 클릭하게 되면

Docker 컨테이너 내부의 폴더에 접근할 수 있습니다.

Docker 컨테이너 내부 위치에 접근 할 수 있습니다.

진짜 도커 컨테이너에 접근했는지,
아닌지 어떻게알아?

해보면알죠

검증하는 순서는 다음과 같습니다.

  1. Docker CLI로 SCORE 배포
  2. 배포한 SCORE의 Txhash 복사
  3. 복사한 Txhash 를 사용, VSCode IDE에서 Python SDK 를 통해 Txresult 조회

3번에서 만약, 서로 다른 환경이라면

VSCode 에서 Txresult 를 조회했을때 없는 트랜잭션 해시 라는 응답이 나와야합니다.

Docker CLI로 SCORE 배포, 배포한 SCORE의 Txhash 복사

결과인 Txhash 를 복사합니다.

복사한 Txhash 를 사용,

VSCode IDE에서 Python SDK 를 통해 Txresult 조회

복사한 Txhash는 0xfee52… 로 시작합니다.

Python code를 짜던 도중에, 자동완성을 보고 눈물흘릴뻔했습니다.

이게 IDE지

실행해 봅니다.

뭔가 많은데… 일단 이 창은 그대로 두고,

Docker CLI에서 Txresult 해 봅니다.

결과 비교

Txhash

Docker CLI =

0xfee52d6c57048df8323226e4d6f0dfde16e653975a706a4bb27097034c0f66c0

VSCode Python = 0xfee52d6c57048df8323226e4d6f0dfde16e653975a706a4bb27097034c0f66c0

Block height

Docker CLI = 0x153

VSCode Python = 339

0x153 은 16진수이므로, 10진수로 변환하면 339가 맞습니다.

둘이 같은 결과를 출력하는것을 확인할 수 있습니다.

울뻔했습니다.

그래도, 이전글에서 소개한 내용보다는 더 간단한 설정으로 사용 가능해졌습니다.

제가 겪은 문제의 원인은 저도 잘 모르고…
구글링해도 잘 나오질 않았습니다.

하지만, 저 말고 다른사람 컴퓨터에서는 문제없이 Pycharm pro 를 활용하는것을 확인했기 때문에

제가 처음에 소개드린 내용으로 설정하시되, 제가 겪은 문제사항이 없으시면 VSCode insider 버전을 굳이 사용하지 않으셔도 될 것 같습니다.

그 이유는…. 아직 정식 지원되는 IDE 버전이 아니기 때문에, 정책이 바뀌거나 버그가 있을 수 있기 때문입니다.

그럼 이만.. 즐거운 코딩되셔요

--

--