ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 윈도우에서 WSL 우분투로 PYTHON 설치하고 가상환경 세팅하기
    개발환경 2021. 1. 11. 01:39

    회사 컴퓨터로 맥을 반년넘게 썼더니 윈도우에서 모든게 낯선 지경에 이르렀다.

    블로그를 시작하면서 설치부터 하나하나 다시 해야한다.

    그냥 대충 하려다가 나중에도 또 할일이 있을 것 같아서 블로그에 기록을 남기려고 한다.

    매번 남의것 보면서하는 것 보다는 내것 보면서 하는게 낫겠지

     

    일단 윈도우에서 파이썬 설치는 공식 홈페이지 www.python.org에 접속하여 다운로드 후 설치해도 되고

    그냥 cmd에서 python 치면 ms store에서 python 최신 버전을 설치할 수 있다.

    사실 최신 버전을 설치하면 라이브러리 호환때문에 잘 안되는 경우가 많아 나는 아직 3.7이나 3.8을 주로 쓰고 있긴 한데

    그냥 설치하고 나서 가상 환경을 세팅하기로 했다.

     

    그런데 이 가상환경 세팅하는것도 맥에서만 여러차례 반복하다보니 윈도우에서 어떻게 하는지도 가물가물 하다.

    분명 예전에 어떻게 했던것 같은데 검색해보니

    나의 파이썬 첫 스승이나 다름없는 코딩도장 홈페이지에 친절하게 설명이 되어있었다.

    dojang.io/mod/page/view.php?id=2470

     

    파이썬 코딩 도장: 47.11 가상환경 사용하기

    파이썬을 사용하다 보면 pip로 패키지를 설치하게 되는데 이 패키지들은 파이썬 설치 폴더(디렉터리)의 Lib/site-packages 안에 저장됩니다. 그래서 pip로 설치한 패키지는 모든 파이썬 스크립트에서

    dojang.io

    하지만 이 방법은 파이썬의 여러 버전을 사용하는 방법이 아니라 그냥 설치되어있는 python과 같은 버전으로 가상환경을 만드는 방법이다.

    내가 원하는 방법은 아니다.

    'virtualenv' 라는것도 동일한 기능이다.

     

    전에 필요한 라이브러리가 자꾸 에러가 나서 하루종일 씨름하다가 알고보니 파이썬 버전 호환 문제인걸 알았기 때문에 버전 관리는 꼭 필요한 기능이라고 생각했다.

     

    맥에서는 'pyenv'를 설치하기만 하면 간단히 해결되는 문제인데 윈도우는 설치부터 동공에 지진나게 만든다.

    그러던중 요즘 윈도우에는 리눅스 설치가 가능하다는 소식을 접하게된다.

    blog.gyus.me/2020/how-to-install-python-on-windows/

     

    그렇다면 설치를 안해볼 수 없지 바로 microsoft store에 들어가서 ubuntu를 설치해본다.

    사실 리눅스는 한번도 써본적이 없다.

    그러나 리눅스를 쓰는것도 어차피 공부를 해야하는 일이므로 오늘부터 1일로 하여 알아가보기로 한다.

     

    설치를 하고 시작버튼을 눌러보니 ubuntu가 보여서 클릭해보니 역시나 에러메세지가 뜬다.

    위 블로그 글에서 에러메세지가 뜰꺼라는 말을 보긴 했지만 내심 시간이 지나서 알아서 해결이 됐기를 바래봤다.

    하지만 어림없지.

    당황하지 않고 배운대로 파워쉘을 켜서 아래 명령어를 입력해본다.

    근데 파워쉘이라는건 또 언제 생긴거지.. 찾아보니 꽤 오래전에 생긴듯 하다. 하지만 그전까지 나는 프로그래밍을 전혀 모르는 무지렁이였으므로 관심이 없었던 것이겠지... 이것도 시간내서 공부해봐야겠다.

    더보기

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

    대충 보니 dism이 

    명령어를 입력하자 아래와 같은 화면이 나를 반겼다.

    여기까지 하고 귀찮지만 윈도우를 재부팅 해야한다고 한다. 

    재부팅하고 ubuntu를 다시 실행하니 설치가 다시 진행된다

    아이디 비밀번호를 입력하니 설치가 완료 되었다.

    그냥 리눅스를 아예 멀티 부팅으로 설치할까 하는 생각이 뇌를 스치고 지나갔지만 애써 무시했다.

     

    이제 리눅스에 파이썬을 설치하면 된다.  또 절차가 굉장히 복잡하다..

    먼저 pyenv-installer를 설치하란다.

    여기서부터는 맥에 설치하던거랑 좀 과정이 비슷해졌다.

    아 그런데 복붙이 안된다. URL을 언제 따라치나 싶어 검색해보니 복붙 설정을 따로 해줘야한단다

    더보기

    우분투 창의 왼쪽 위 아이콘을 오른쪽 클릭하면 나오는 메뉴에서 속성을 클릭."편집 옵션"에서 "Ctrl+Shift+C/V를 복사(C)/붙여넣기로 사용" 을 체크

    설치와 관련해서 아래 블로그를 참고한다

    그런데 위 블로그대로 bashrc에 환경 설정을 하려는데 No such file or directory 라는 에러가 발생한다.

    사실 위 블로그대로 pyenv로 바로 설치한게 아니라 다른 블로그를 참조하여 pyenv-installer로 설치해서 그런가?

    이전 블로그에서 하라는대로 다시 입력을 해본다.

    이번에는 mkdir: cannot create directory ‘/.pyenv’: Permission denied  에러가 뜬다

    폴더를 만들려다가 권한이 없어서 실패했다는 말인것 같다.

    그래서 우분투에서 권한 주는법을 찾아봤다.

    하지만 권한을 백날 줘도 안된다.

    권한 주는법도 사실 잘 몰라서 이해 없이 따라하다보니까 잘 줬는지 어쩐지도 모르겠다.

    결국 rm 명령어를 사용해서 이전에 설치했던 pyenv 폴더를 삭제한 후 위 깃헙 블로그에서 하라는대로 다시 설치를 했다.

    아주 잘된다.

    나는 무엇을 위해 뻘짓을 했는가...

    이후부터는 pyenv install 명령어를 사용해서 원하는 파이썬 버전을 설치하면 된다.

    virtualenvwrapper도 설치해줘야한다.

    안그러면 가상환경 폴더마다 따로 들어가서 활성화를 시켜줘야하기 때문이다..

    역시 위 블로그에 잘 나와있다.

    위 블로그에서 pyenv virtualenvwrapper_lazy 앞에 export 가 빠져있다

    export pyenv virtualenvwrapper_lazy라고 해줘야 정상적으로 작동할 수 있다.

     

    여기까지하고 pyenv install 로 파이썬 버전을 설치하려고 하면

    작동을 안한다

    C컴파일러를 설치해야 사용이 가능하단다.

    더보기

    sudo apt-get install build-essential

    명령어를 입력하여 컴파일러를 설치해준다.

    위 명령어로 설치했더니 

    더보기

    Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

    라고 한다..

    더보기

    sudo apt-get update

    로 apt-get을 업데이트 해준다.

    그리고 다시 sudo apt-get install build-essential 을 입력해본다

    에러 메세지 없이 성공했다!

    그럼 이제 pyenv install로 파이썬을 설치해본다.

    또 에러가 뜬다!!! 야호

    can't decompress data; zlib not available 란다.

    압축을 해제 못한다는 것같다.

    더보기

    sudo apt-get install zlib1g-dev 

    를 입력하여 설치해준다음에

    다시 파이썬 버전 설치를 시도해본다

    잠깐의 인내의 시간을 거쳐 성공!!하면 좋겠지만 또 실패다

    이번엔 에러메세지도 뭐라는지 모르겠다.

    최후의 수단으로 아래꺼를 다 설치해본다

    더보기

    sudo apt-get install autoconf automake autopoint autotools-dev blt-dev debhelper dh-autoreconf dh-strip-nondeterminism diffstat docutils-common gettext intltool-debian libarchive-zip-perl libbluetooth-dev libbluetooth3 libbz2-dev libcroco3 libdb-dev libdb5.3-dev libexpat1-dev libffi-dev libfile-stripnondeterminism-perl libfontconfig1-dev libfreetype6-dev libgdbm-dev libice-dev libjs-jquery libjs-sphinxdoc libjs-underscore liblzma-dev libmpdec-dev libncursesw5-dev libpixman-1-0 libpng-dev libpthread-stubs0-dev libreadline-dev libsm-dev libsqlite3-dev libssl-dev libtcl8.6 libtext-unidecode-perl libtimedate-perl libtinfo-dev libtk8.6 libtool libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxext-dev libxfont2 libxft-dev libxkbfile1 libxml-libxml-perl libxml-namespacesupport-perl libxml-sax-base-perl libxml-sax-perl libxrender-dev libxss-dev libxss1 libxt-dev m4 pkg-config po-debconf python-babel-localedata python3-alabaster python3-babel python3-docutils python3-imagesize python3-lib2to3 python3-pygments python3-roman python3-sphinx python3-tz quilt sgml-base sharutils sphinx-common tcl tcl-dev tcl8.6 tcl8.6-dev tex-common texinfo tk tk-dev tk8.6 tk8.6-blt2.5 tk8.6-dev x11-xkb-utils x11proto-core-dev x11proto-dev x11proto-scrnsaver-dev x11proto-xext-dev xml-core xorg-sgml-doctools xserver-common xtrans-dev xvfb zlib1g-dev

    결국성공!
    인내의 승리를 쟁취했다

     

    댓글

Designed by Tistory.