우연히 보게된 노마드 코더(Nomad Coders)의 유튜브.

파이썬 코드만가지고 JS, React, NextJS 인터랙티브 웹앱을 만들어주는 프레임워크가 나타났단다.

 

 

최근 정말 많은 주목을 받고 있는 오픈소스 프로젝트인 것은 분명한 것 같다.

 

https://pynecone.io/

 

Pynecone: The easiest way to build web apps.

Completely customizable. All Pynecone components are fully customizable. Change the colors, fonts, and styles to match your project. Styling guide ->

pynecone.io

 

발음이 같은 'pinecone'을 상징하는 솔방울을 로고로 사용하고 있다 ^^

 

공식 웹사이트도 Pynecone을 사용해서 만들었다고 한다.

왠지 Unix is Not Unix 같은 느낌인데!? 아닌가?! ^^

 

 

Pynecone은 파이썬으로 작성한 코드를

React/NextJS로 컴파일을 하는 방식이기에 성능이 뛰어나며 그래서 node를 필요로 하고 있다.

 

보다 더 나은 성능을 위해 node를 bun으로 교체하는 작업을 하고 있지만

아직 100% 호환성을 보장하지 못하기에 당분간은 node를 계속 필요로 할 것이라고 한다.

 

 

서두가 길었다.

이제 직접 한 번 사용해보자.

 

 

이하 과정은 다음 링크의 내용을 따라갔다.

- https://pynecone.io/docs/getting-started/installation

 

 

0. PoC Environment

  - 이하 과정을 진행한 환경은 Ubuntu 20.04 64bit Desktop 이다.

 

 

2. Prerequisites

  - Python 3.7+

  - NodeJS 12.22.0+

 

  ① Python 여러 버전을 관리할 수 있는 pyenv 기반으로 설치해보자.

    . https://www.whatwant.com/entry/pyenv

    . 설치한 버전은 다음과 같이 했다.

      - v3.8.16

 

  ② node 설치도 여러 버전을 관리할 수 있는 nvm 기반으로 설치를 진행해보자.

    . https://www.whatwant.com/entry/npm

    . 설치한 버전은 다음과 같이 했다.

      - v18.15.0   (Latest LTS: Hydrogen)

 

 

3. Virtual Environment

  - Optional 이라지만, 사실 필수이지 않을까 싶다.

❯ cd ./workdir

❯ python -m venv .venv

source .venv/bin/activate

 

 

4. Installing

  - 이제 pynecone 설치하면 된다!

 pip install pynecone

 

 

5. Create a Project

  - 일단 프로젝트 생성하는 방법부터 알아보자.

 mkdir my_app_name

 cd my_app_name

 pc init

 

 

6. Run the App

  - 일단 한 번 띄워보자.

 pc run

 

  - 브라우저로 확인해보자.

 

 

 

7. Edit

  - 본문을 살짝 살펴보자.

❯ nano my_app_name/my_app_name.py

  - 눈꼽만큼 변경해보자.

"""Welcome to Pynecone! This file outlines the steps to create a basic app."""
from pcconfig import config

import pynecone as pc

docs_url = "https://pynecone.io/docs/getting-started/introduction"
filename = f"{config.app_name}/{config.app_name}.py"


class State(pc.State):
    """The app state."""

    pass


def index() -> pc.Component:
    return pc.center(
        pc.vstack(
            pc.heading("Welcome to WHATWANT!", font_size="2em"),
            pc.box("Get started by editing ", pc.code(filename, font_size="1em")),
            pc.link(
                "Check out our docs!",
                href=docs_url,
                border="0.1em solid",
                padding="0.5em",
                border_radius="0.5em",
                _hover={
                    "color": "rgb(107,99,246)",
                },
            ),
            spacing="1.5em",
            font_size="2em",
        ),
        padding_top="10%",
    )


# Add state and page to the app.
app = pc.App(state=State)
app.add_page(index)
app.compile()

 

  - 포트도 변경하고, debug log도 찍어보자.

❯ pc run --port 8282 --loglevel debug

 

  - http://localhost:8282/

 

 

8. Fast Refresh

  - Pynecone은 실시간으로 변경 사항이 반영된다.

  - 웹브라우저가 띄워져 있는 상황에서, 다른 터미널로 파일을 수정해보자.

❯ nano my_app_name/my_app_name.py

 

  - 파일을 수정한 뒤, 저장을 하면 조금 있다가 브라우저에 자동으로 페이지 내용이 변경된다.

 

 

 

일단 여기까지 살짝 맛만 봤고

시간이 나면 다음 단계로 넘어가보겠다. (시간이 날까?! ^^)

 

반응형

 

GitHub Pages 기능을 이용한 개인 포트폴리오 웹서비스를 해보려고

이것 저것 알아보던 중 몇 가지 템플릿을 찾았는데

 

사용법에 등장한 'npm'

 

"응?! npm을 설치해야겠구만!"

 

 

'npm'의 약자는 'Node Package Manager'이다.

 

즉, node.js 기반으로 미리 잘 만들어진 패키지들을 사용하고 싶을 때

의존성 있는 패키지들을 설치하려면 npm을 이용하면 된다.

 

 

다른 프로그래밍 언어들도 각자 나름의 패키지 매니저가 있다.

Language Package Manager
Ruby Gem
PHP Composer
C# NuGet
Java Jpm
Python pip

 

다시 npm 이야기로 돌아와서

node와 npm이 짝궁이라면 node만 설치해도 npm이 같이 설치가 된다는 말인데,

node를 설치하려고 봤더니 정말 다양한 버전의 node가 있다.

 

 

상황에 따라 여러 버전의 node를 사용하게 된다는 것인데,

하나의 시스템에서 여러 버전의 node를 사용하려면 귀차니즘이 발동할 수 있다는...

 

 

그래서, 여기저기 기웃거리다가 찾게된 'nvm'

 

'nvm'의 약자는 'Node Version Manager'이다.

 

 

 

nvm 저장소 주소는 다음과 같다.

  - https://github.com/nvm-sh/nvm

 

nvm

 

 

'nvm' 설치 방법은 다양하게 제공되고 있고

일반적으로는 'curl' 명령어를 이용해서 install script를 실행하는 방식을 가이드하고 있다.

 

하지만, 여기에서는 개인적인 취향으로

깔끔하게 git clone 받아서 직접 설치하는 방법으로 결정했다.

  - https://github.com/nvm-sh/nvm#git-install

 

 

이하 과정은 Ubuntu 20.04 LTS 환경에서 진행했다.

 

❯ git clone https://github.com/nvm-sh/nvm.git ~/.nvm

❯ cd ~/.nvm

git switch -c v0.39.3 tags/v0.39.3

 

개인적으로 zsh을 사용하고 있으므로 이를 기준으로 해서 후속 작업 진행했지만,

bash를 사용하는 경우에도 동일한 과정이다.

 

❯ nano ~/.zshrc

 

...
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

 

위의 내용을 추가해주고, 터미널 재시작하면 'nvm' 명령어를 먹는다.

 

❯ nvm --version
0.39.3

 

nvm에서 설치 가능한 node version 목록을 확인하고 싶다면 다음 명령어를 사용하면 된다.

 

❯ nvm ls-remote

 

최신 버전의 node를 설치하려면 다음 명령어를 통해 가능하다.

 

❯ nvm install node
Downloading and installing node v19.3.0...
Downloading https://nodejs.org/dist/v19.3.0/node-v19.3.0-linux-x64.tar.xz...
####################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v19.3.0 (npm v9.2.0)
Creating default alias: default -> node (-> v19.3.0)

❯ node --version
v19.3.0

 

특정 버전의 node는 다음과 같이 설치할 수 있다.

 

❯ nvm install 14.7.0
Downloading and installing node v14.7.0...
Downloading https://nodejs.org/dist/v14.7.0/node-v14.7.0-linux-x64.tar.xz...
####################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v14.7.0 (npm v6.14.7)

❯ node --version
v14.7.0

 

앞에서 설치한 버전으로 변경하고자 한다면 다음과 같이 할 수 있다.

 

❯ nvm use node 19.3.0
Now using node v19.3.0 (npm v9.2.0)

❯ node --version
v19.3.0

 

어디에 설치되어 있는지(실행 파일의 위치를) 확인하고 싶다면 다음과 같이 하면 된다.

 

nvm which 19.3.0
/home/chani22/.nvm/versions/node/v19.3.0/bin/node

 

어?! 여기서 잠깐 !!!

우리가 지금 여기까지 진행한 이유는 npm 설치를 하려던 것이다. npm을 확인해보자.

 

❯ node --version
v19.3.0

❯ npm --version
9.2.0

❯ nvm use node 14.7.0
Now using node v14.7.0 (npm v6.14.7)

❯ node --version
v14.7.0

❯ npm --version
6.14.7

 

중간에 node 버전을 변경해봤더니, npm도 버전이 바뀌었다는 것을 볼 수 있었다.

 

 

여기까지 해서 마무리~!!!

반응형

'Programming > Web' 카테고리의 다른 글

Vite로 React 앱 만들기  (0) 2024.11.07
백엔드 프레임워크 - KeystoneJS  (1) 2023.07.13

 

Python은 왠지 한글하고 친하지가 않은 것 같다.

그나마 v3.x 버전이 되면서 많이 편해지긴 했지만, 그래도 한글 관련 이슈가 계속 나오는 느낌적인 느낌이...

 

MachineLearning 공부하게 되면서 많은 분들이 사용하고 있는 matplotlib의 경우에도

기본적으로는 한글 출력에 문제가 있다.

 

Google Colab 및 Local 환경에서 matplotlib 한글 출력이 잘 되도록 해보자.

 

 

1. Google Colab

 

① 기본 상황

  - 한글 부분이 제대로 나오지 않는 것을 볼 수 있다.

 

font error

 

② 폰트 설치

  - 나눔 폰트를 설치해보자.

 

!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf

 

install font

 

③ 런타임 재시작

  - 설치된 폰트를 사용하기 위해 "런타임 다시 시작"을 실행하자

 

런타임 다시 시작

 

④ 폰트 적용

  - 이제 한글을 적용해서 그래프를 그려보자.

  - 설치한 폰트를 사용하도록 한 줄 추가가 되어야 한다.

 

plt.rc('font', family='NanumBarunGothic')

 

matplotlib with hangul

 

  - 그런데, 위의 그래프에서 뭔가 이상한 것을 볼 수 있는가?

  - y축의 "-5" 부분이 제대로 출력되지 않았다.

 

⑤ minus 처리

  - 아래와 같은 구문이 추가되면 된다.

import matplotlib as mpl
 
mpl.rcParams['axes.unicode_minus'] = False

 

fix minus

 

 

2. Local (Ubuntu)

Colab과 비슷하지만 약간 차이가 있다.

 

① 기본 상황

  - 코드가 살짝 다르다.

 

import pandas as pd
import matplotlib.pyplot as plt
import warnings

warnings.simplefilter(action='ignore', category=UserWarning)

plt.plot(['서울', '경기', '인천', '광주', '대구', '부산', '울산', '대전', '제주'], [12, 32, -4, 0, 5, 2, 19, 9, 3])
plt.xlabel('x축')
plt.ylabel('y축')
plt.title('제목')
plt.savefig('test.png')

 

execute

 

error

 

② 폰트 설치

  - 나눔 폰트를 설치해보자.

 

$ sudo apt-get install -y fonts-nanum
$ sudo fc-cache -fv
$ rm ~/.cache/matplotlib -rf

 

③ 코드 개선

  - 폰트 및 마이너스 관련 코드 추가해서 재실행해보자.

 

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import warnings

warnings.simplefilter(action='ignore', category=UserWarning)

plt.rc('font', family='NanumBarunGothic')
mpl.rcParams['axes.unicode_minus'] = False

plt.plot(['서울', '경기', '인천', '광주', '대구', '부산', '울산', '대전', '제주'], [12, 32, -4, 0, 5, 2, 19, 9, 3])
plt.xlabel('x축')
plt.ylabel('y축')
plt.title('제목')
plt.savefig('test.png')

 

new graph

 

예쁜 한글 파이팅 !!!

 

반응형

 

나의 로컬 환경에서 Jupyter Notebook을 사용하고 싶어서 살펴봤다.

 

0. 실행 환경

  - Ubuntu 18.04 환경에서 진행했지만, 20.04 등 다른 버전에서도 잘 될 것 같다.

 

1. 설치

  - 가장 편한 "pip"를 이용해서 설치해봤다.

$ pip install jupyter

 

pip install jupyter

 

2. 설치 내역

  - Jupyter Notebook은 여러 패키지의 조합이다. 확인해보자.

$ jupyter --version

 

jupyter --version

 

3. 실행

  - Jupyter Notebook을 실행해보자.

$ jupyter notebook

 

jupyter notebook

 

  - 자동으로 브라우저가 실행되며 Jupyter Notebook을 볼 수 있다.

 

jupyter notebook

 

  - 오른쪽 중간에 보이는 "New" 버튼을 통해 새로운 Notebook을 생성하고, 간단한 실행을 해보자.

 

jupyter notebook

 

정말 간단히 Jupyter Notebook 환경을 만들 수 있다.

서버로 구동하거나 비밀번호를 등록하는 등의 추가 설정은 별도의 포스팅으로 작성해보도록 하겠다.

 

반응형

알람(Alarm)이나 공지(Notification)를 하는 방법 중에서 카카오톡 메시지는  상당히 매력적이다.

 

Python 등을 이용해서 카카오톡 메시지를 발송하는 것은

알아야할 것들이 많아서 그렇지 어렵지는 않으니 하나씩 확인해보자.

 

01. kakao developers 가입하기

  - https://developers.kakao.com/

 

kakao developers

 

02. 애플리케이션 추가하기

  - 가입, 로그인 후 상단에 있는 메뉴 중에서 "내 어플리케이션"을 선택하자.

 

내 어플리케이션

 

  - 메시지 발송과 같은 작업을 하기 위해서는 기본이 되는 "애플리케이션"이 있어야 한다.

  - '앱 이름'과 '사업자명'을 임의로 적어주면 되고, 앱 아이콘은 등록하지 않아도 된다.

 

애플리케이션 추가

 

03. 애플리케이션 요약 정보

  - 생성한 애플리케이션을 선택하면 다양한 설정을 할 수 있는 화면을 볼 수 있다.

  - 첫 화면으로 나오는 요약 정보에서는 중요한 "앱 키"들도 볼 수 있다.

 

요약 정보

 

04. 카카오 로그인 활성화

  - 카카오 로그인 API를 사용하기 위해서 활성화 설정을 진행해야 한다.

 

로그인 활성화


05. Redirect URI

  - 로그인이 된 다음에 되돌아갈 URI를 등록하는 것이다.

  - 지금 마땅히 없으니, 그냥 샘플로 제공되는 주소를 그대로 써주자. (https://naver.com 같이 입력해도 무방하다)

 

Redirect URI

 

06. 접근 권한

  - 사용자 동의가 필요한 접근 항목들이 있다.

  - 제품 설정 → 카카오 로그인 → 동의항목 → 접근 권한 → 카카오톡 메시지 전송 → 설정

 

접근 권한

 

  - 아래 화면과 같이 "선택 동의"를 선택하고 "동의 목적"에 문구를 작성해주면 된다.

 

카카오톡 메시지 전송 설정

 

07. 소셜 API 가이드

  - 사이트 상단 메뉴에서 "문서" 선택 후, 소셜API가이드 - 메시지 - REST API

 

소셜 API 가이드

 

08. REST API 테스트 도구

  - "카카오톡 메시지:REST API" 페이지를 보면 바로 보이는 "REST API 테스트 도구"를 클릭하자.

 

카카오톡 메시지: REST API

 

09. 나에게 기본 템플릿으로 메시지 보내기

  - "REST API 테스트 도구"를 클릭하면 볼 수 있는 화면이다.

 

나에게 기본 템플릿으로 메시지 보내기

 

10. 액세스 토큰

  - "액세스 토큰" 항목에서 "토큰 발급" 눌러 주자.

  - 아래 화면에서 보이는 것과 같이 진행하면 된다.

 

토큰 발급

 

  - 확인을 누르면 동의화면이 나온다. 동의 해주면 된다.

 

동의하기

 

11. 명세 확인하기

  - 페이지의 하단 부분을 보면 "명세" 부분을 볼 수 있다.

  - "template_object"의 타입 부분에서 "Text"를 클릭해 주자.

 

명세

 

  - 메시지의 종류라고 생각하면 되고, 지금은 "Text" 형식으로 메시지를 보내고자 하기에 이렇게 한 것이다.
  - 아래와 같은 형식으로 사용할 수 있다는 것을 확인할 수 있다.
    . {"object_type":"text","text":"Hello World !!!","link":{}}

 

 

12. 전송

  - 페이지의 위로 올라가서 Body 부분의 "template_object" 항목에 입력해주면 된다.

 

전송

 

13. 응답

  - 모두 잘 따라왔으면 아래와 같이 200 OK 응답을 받았을 것이다.

 

응답

 

14. 확인

  - 카카오톡에 정상적으로 전달된 메시지를 볼 수 있다.

 

카카오톡

 

이번에는 여기까지만 진행하고,

Python 코드로 진행하는 것은 별도의 포스팅으로 진행하겠다.

반응형

Flutter는 Google이 출시한 Cross-Platform GUI Application Framework이다.

그냥 쉽게 말하자면, 소스코드 하나로 안드로이드, iOS, Web, Windows, macOS, Linux 어플리케이션을 만들 수 있는 것이다.

 

flutter

 

아직까지는 주로 안드로이드와 iOS 앱을 같이 만들기 위해 사용한다.

 

하지만, Flutter SDK만 가지고 가능한 것은 아니고,

Android Studio와 Xcode도 같이 필요하기 때문에

Windows 개발환경에서는 Xcode를 설치할 수 없어서 안드로이드 앱만 빌드 가능하고,

macOS 개발환경이어야지 안드로이드 앱과 iOS 앱을 같이 빌드 할 수 있다.

 

그러면 실제 코딩을 하는 IDE는 뭘 써야 할까?!

 

이론적으로 메모장으로 코딩을 해도 무관하지만,

IDE를 이용한 다양한 편의 기능을 위해 Android Studio 환경을 사용하는 것을 권장한다.

 

하지만, 왠지 쓰라는대로 쓰기에는 자존심이 상한다. (왜?)

 

우리의 만능 IDE 도구인 Visual Studio Code를 사용하면 안될까!?

 

된다 !

그것도 아주 잘 된다.

 

다만 몇 가지 Android Studio와 차이점이 있어서 좀 찾아보기는 해야 한다.

 

-----------------------------------------

 

Flutter 개발환경 구축하는 것은 아래 포스팅을 참고하도록 하자.

 

- Windows 환경에서 Flutter 설치하기 : https://www.whatwant.com/entry/Flutter-Install-Flutter-설치하기-Windows

- macOS 환경에서 Flutter 설치하기 : https://www.whatwant.com/entry/Flutter-Install-MacOS

- VSCode를 Flutter 개발환경으로 만들기 : https://www.whatwant.com/entry/Flutter-with-Visual-Studio-CodeVSCode

 

 

이번 포스팅에서 설명하고자 하는 것은 Flutter 신규 프로젝트를 생성하는 방법이다.

 

 

1. Organization 등록

  - 앱을 만들 때에는 앱의 고유 domain을 사용해야 한다.

  - 웹 주소가 반대로 되어 있는 형태로 사용된다 (예: com.whatwant.www)

    . 이 때, 'com.whatwant' 부분이 organization(또는 company) 영역이고

    . 'www' 부분이 앱의 명칭이 된다.

  - 신규 프로젝트(앱)을 생성하기에 앞서서 organization 정보를 미리 설정을 해놓지 않으면 나중에 엄청 귀찮다.

 

  - 'Preference - Settings' 메뉴를 실행하자.

Preference - Settings

  - 검색 필드에 'flutter create organization'을 타이핑 하면 검색된 설정 항목이 보인다.

  - 하단 링크로 보이는 'Edit in settings.json'을 클릭하자.

Edit in settings.json

  - 'dart.flutterCreateOrganization' 부분에 원하는 내역으로 입력하고 저장하면 된다.

organization

 

2. New Project

  - 이제 프로젝트를 생성하면 된다.

  - 'Command Palette (Command+Shift+p / Ctrl+Shift+p)'를 실행한 뒤

  - 'Flutter: New Project' 선택

Flutter: New Project

  - 프로젝트 유형으로는 'Application'을 고르면 된다 (앱 개발이 아니라면, 적합한 것으로 고르면 된다)

Application

  - 저장 위치는 프로젝트를 저장할 디렉토리가 생성될 위치를 고르면 된다 (프로젝트 디렉토리는 자동으로 생성한다)

select folder

  - 그리고, 프로젝트 이름을 지어주면 된다

project name

  - 'android - app - build.gradle' 파일을 열어보면

     앞에서 설정한 organization 이름과 프로젝트 이름이 잘 반영되어 있는 것을 볼 수 있다.

build.gradle

 

 

만약에 organization 설정을 미리 해놓지 않으면 어떻게 될까?!

'com.example'과 같은 기본값으로 반영이 되었을 것이다.

 

나중에 앱스토어 등에 등록하고자 한다면 문제가 될 것이다.

 

그러면, 수정을 해줘야 할텐데... 문제는 여러 곳에 있는 내용을 찾아서 전부 변경을 해줘야 하는 불편함이 발생한다.

물론, 하면 되는데 ... 깔끔하게 미리 설정해서 반영하는 것이 보다 편하지 않을까!?

 

반응형

라떼는 ... Python 버전이 2.x 인지 아니면 3.x 인지만 따지면 됐었는데,

요즘은 ... 3.6 이어도 충분한지 3.7 또는 3.8 호환인지도 따져야 하는 (더러운까지는 아니고) 아주 머리아픈 세상이다.

 

그래서 지금까지는 Ubuntu 환경으로 구축해놓은 개발PC 에서

기존에 JDK에서 사용하던 방식처럼 Python도 alternative 방식으로 원하는 버전을 선택해서 사용했었다.

 

  - https://www.whatwant.com/entry/update-alternatives-여러-버전의-패키지-관리하기

 

 

가볍게 사용하기에는 alternative 방식도 나름 괜찮은 방법이다.

하지만, Python에서는 JDK에서는 만나지 못했던 문제 상황이 발생한다.

작성한 프로그램에서 필요로 하는 패키지들이 있고, 서로간의 dependency까지 신경을 써줘야 한다.

 

패키지 관리에 대한 것은 다음 기회에 살펴보기로 하고,

지금은 일단 여러 버전의 Python을 편하게 사용할 수 있는 방법에 대해서 알아보도록 하겠다.

 

 

[ pyenv ]

  - https://github.com/pyenv/pyenv

 

pyenv

 

왜 이제서야 이 아이를 알게 되었을까!?

진작 알았더라면 훨씬 편하게 살 수 있었을 텐데...

 

이하 과정은 `Ubuntu 18.04` 운영체제에서 `zsh` 쉘환경을 기준으로 진행했다.

일부 차이가 나는 부분에 대해서는 pyenv 사이트에 나오는 가이드를 참고하면 된다.

 

 

1. Environment

 

Ubuntu 패키지로 제공되는 Python2, Python3 모두 설치되어 있으며,

버전 관리를 위해 update-alternatives 설정이 되어 있다.

❯ python --version
Python 3.6.9

❯ sudo update-alternatives --list python

/usr/bin/python2
/usr/bin/python3

❯ sudo update-alternatives --list pip   
/usr/bin/pip3

 

 

2. Prerequisites

 

① remove alternative

alternative가 설정된 상태에서 pyenv는 정상 동작하지 않기에 설정을 지워야 한다.

❯ sudo update-alternatives --remove python /usr/bin/python

❯ sudo update-alternatives --remove pip /usr/bin/pip

 

② install the Python build dependencies

Python build를 위해 필요한 의존성 패키지들을 설치해주자. 좀 많이 설치된다.

❯ sudo apt install make build-essential libssl-dev zlib1g-dev \ 
                        libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
                        libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

 

 

3. Basic GitHub Checkout

 

여러 설치 방법 중에서 가장 깔끔하고 무난한 방법이라서 선택했다.

 

① git clone

❯ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

 

② build

꼭 해야하는 과정은 아니지만, 성능 향상을 위해서 추천한다.

❯ cd ~/.pyenv && src/configure && make -C src
make: 디렉터리 '/home/chani/.pyenv/src' 들어감
gcc -fPIC     -c -o realpath.o realpath.c
gcc -shared -Wl,-soname,../libexec/pyenv-realpath.dylib  -o ../libexec/pyenv-realpath.dylib realpath.o 
make: 디렉터리 '/home/chani/.pyenv/src' 나감

 

③ Configure your shell's environment for Pyenv

여기에서는 zsh 환경에 대해서만 진행한다. 다른 쉘을 사용한다면 GitHub 사이트 방문해서 참고하면 되겠다.

아! MacOS의 zsh 환경에서는 .profile 부문만 빼고 진행하면 된다.

> echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zprofile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zprofile
echo 'eval "$(pyenv init --path)"' >> ~/.zprofile

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init --path)"' >> ~/.profile

echo 'eval "$(pyenv init -)"' >> ~/.zshrc

 

④ 재로그인 / 재부팅

로그아웃 후에 다시 로그인 하거나, 재부팅을 해야 이하 과정이 제대로 진행된다.

 

⑤ 확인

제대로 설치되었는지 확인해보자. 아래 결과가 나오지 않으면 위의 과정을 다시 한 번 점검해보기 바란다.

❯ pyenv versions
* system (set by /home/chani/.pyenv/version)

 

 

4. Python Install

 

이제 새로운 버전의 Python을 설치해보자.

현재 다운로드 받을 수 있는 버전들을 확인하고 싶으면 아래 사이트를 참고하기 바란다.

  - https://www.python.org/downloads/

 

① Python Install

❯ pyenv install 3.8.12
Downloading Python-3.8.12.tar.xz...
-> https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tar.xz
Installing Python-3.8.12...
Installed Python-3.8.12 to /home/chani/.pyenv/versions/3.8.12

 

② 확인

방금 설치한 3.8.12 버전을 볼 수 있다. (하지만 현재 설정된 것은 system에 설치된 버전이다)

❯ pyenv versions
* system (set by /home/chani/.pyenv/version)
  3.8.12

 

③ 추가

3.9 버전도 추가로 설치해보자.

❯ pyenv install 3.9.10
Downloading Python-3.9.10.tar.xz...
-> https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tar.xz
Installing Python-3.9.10...
Installed Python-3.9.10 to /home/chani/.pyenv/versions/3.9.10

❯ pyenv versions
* system (set by /home/chani/.pyenv/version)
  3.8.12
  3.9.10

 

 

5. command

 

전체 명령어에 대한 가이드는 아래 링크를 참조하기 바란다.

  - https://github.com/pyenv/pyenv/blob/master/COMMANDS.md

 

주로 사용할 것은 local / global / shell 이지 않을까 싶다.

❯ cd /srv/workspace/pyenv-test

❯ pyenv versions
  system
* 3.8.12 (set by /home/chani/.pyenv/version)
  3.9.10

❯ ls -al
합계 8
drwxrwxr-x 2 chani chani 4096  3월 14 23:01 .
drwxr-xr-x 4 chani chani 4096  3월 14 23:00 ..

❯ pyenv local 3.9.10

❯ ls -al
합계 12
drwxrwxr-x 2 chani chani 4096  3월 14 23:03 .
drwxr-xr-x 4 chani chani 4096  3월 14 23:00 ..
-rw-rw-r-- 1 chani chani    7  3월 14 23:03 .python-version

❯ pyenv versions
  system
  3.8.12
* 3.9.10 (set by /srv/workspace/pyenv-test/.python-version)

❯ pyenv local --unset

❯ ls -al
합계 8
drwxrwxr-x 2 chani chani 4096  3월 14 23:04 .
drwxr-xr-x 4 chani chani 4096  3월 14 23:00 ..

❯ python --version
Python 3.8.12

❯ pyenv versions
  system
* 3.8.12 (set by /home/chani/.pyenv/version)
  3.9.10

 

이제 Python 버전의 괴로움에서 벗어나자~~~!!!

 

반응형

 

M1 맥북을 경품으로 받았다.

할아버지 맥북(2011)밖에 없었는데, 나에게도 최신 맥북이 생겼다! 앗싸!!

 

그런데, 새로운 나의 맥북이 오자마자 생존의 위협을 받고 있다.

Windows 노트북 2대, 맥북 2대, 안드로이드 태블릿 2대, Windows 데스크탑 1대 ... 등짝 스매싱 각이다.

 

마나님이 새로 생긴 맥북을 어디에 쓸거냐며 스마트폰에서 당근 마켓을 살펴보고 있다.

새로 생긴 맥북에 쓰임새를 주지 않으면 팔려가게 생겼다.

 

flutter 개발 환경을 어서빨리 구축해서

개발 용도로 아주 중요한 아이라고, 꼭 필요한 아이라고 증명해야겠다.

 

 

 

Flutter 개발환경 구축을 위해서는 설치해야할 것들이 많다.

 

1. Android Studio

2. Xcode

3. Chrome

4. VSCode

5. Flutter SDK

6. VSCode Extension - Flutter

 

 

한 번만 고생하면 된다. 하나씩 진행해보자.

 

 

1. Android Studio

  - https://developer.android.com/studio

Android Studio Download

  - 우리 M1은 `Apple chip`을 선택해야 한다.

Agree

  - 그런데, 아직은 호환성이 완벽하지 않은 것 같지만 그래도 나아지겠지 ...

compatibility

 

 

2. Xcode

  - `App Store`를 통해서 설치하면 된다.

  - 오래 걸린다.

Xcode

 

3. Chrome

  - 사실 M1 처음 셋팅할 때 바로 설치를 해서 별도의 스냅샷이 없다 ^^

 

4. VSCode

  - 마찬가지로 처음 셋팅할 때 바로 설치를 해서 ...

 

5. Flutter SDK

  - https://docs.flutter.dev/get-started/install/macos

flutter sdk

  - 우리 M1은 Rossetta 2 사용이 가능해야 한단다.

    . https://github.com/flutter/flutter/wiki/Developing-with-Flutter-on-Apple-Silicon

Rosseta 2

  - 다운로드 받은 후에 압축 풀고 임의의 디렉토리에 위치 시키면 된다.

    . 필자는 `$HOME/install/flutter` 경로에 위치 시켰다.

flutter sdk path

 

6. VSCode Extension - Flutter

  - VSCode에서 Flutter Extension을 설치하자.

Flutter Extension

  - Flutter Extension만 설치해도 Dart Extension은 자동으로 같이 설치 된다.

Dart Extension

 

 

많은 것들을 설치하느라 고생했다.

이제는 환경 설정을 하자.

 

 

7. PATH 설정

  - 필자는 ZSH을 사용하기에 `~/.zshrc` 파일을 수정했다.

  - 앞에서 설치한 `Flutter SDK`의 `/bin` 디렉토리를 추가해주면 된다.

edit PATH

  - 추가한 경로를 로딩시키기 위해 `source ~/.zshrc` 실행하자

source ~/.zshrc

 

8. Run Flutter Doctor

  - Flutter가 잘 설치되어있는지 점검을 해주는 doctor를 실행해보자

    . `Shift+Command+P` 단축키로 Pallete를 실행하자

    . `Flutter: Run Flutter Doctor`를 선택해서 실행하면 된다. (몇 글자 치면 추천 뜬다!)

Run Flutter Doctor

  - SDK 경로를 못찾겠다고 나오면 경로 찾아서 Set 해주면 된다.

    . 여기에서는 `~/install/flutter/bin` 경로로 해주면 된다.

Set Flutter SDK folder

  - OUTPUT 영역에 doctor 실행 과정이 나온다.

flutter doctor

  - Android toolchain 부분과 Xcode 부분에서 issue가 있다고 알려준다

doctor issues

 

9. Android Licenses (+ Android SDK command-line Tools)

  - `flutter doctor --android-licenses`를 실행하면 되는데, 아래와 같이 에러메시지가 나올 수 있다.

android-licenses errors

  - `Android SDK command-line Tools`를 설치해야 한다.

    . 일단 Android Studio를 실행하고

    . Preferences 메뉴를 고르자

Android Studio

    . Android SDK - SDK Tools 메뉴에서 `Android SDK command-line Tools`를 체크하고 Apply 하면 된다.

Android SDK command-line Tools

  - 이제 다시 `flutter doctor --android-licenses`를 터미널에서 실행하면 된다.

    . Accept에서 `y`를 타이핑하면 된다.

android-licenses

 

 

10. Xcode (+ cocoapods)

  - Xcode 관련해서 issues들을 해결해야 하는데, 캡쳐해놓은 것들이 날라가서 그냥 텍스트로 공유하겠다.

 

  - `cocoapods` 설치는 다음과 같이 하면 된다.

 

$ sudo gem install cocoapods -n /usr/local/bin

$ pod setup

 

  - 그리고 아래 것들도 마저 실행해보자.

 

$ sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

$ sudo xcodebuild -runFirstLaunch

 

 

11. 최종 확인

  - 다시 flutter doctor를 실행해서 issues가 없음을 확인하자

no issues

 

 

여기까지~

반응형

+ Recent posts