pyenv 환경에서 Google Cloud SDK 설치

Google Cloud SDK는 Python2 계열만 지원하고 게다가 오래된 채로 남아있는 것 같고, pyenv (+virtualenv) 환경하에서 설치를 시도하면 여러 곳이 파괴된다.

하고 싶은 일


pyenv virtualenv 2.7.12 gcloudsdk에서 만든 Python2 환경 아래에 Google Cloud SDK를 설치하고 싶습니다. 시스템 환경을 오염시키지 않을 것입니다.

문제점



StackOverflow 질문에 따르면,
$ export CLOUDSDK_PYTHON=$(which python2)
$ ./install.sh

그렇다면 움직이는 것 같지만, 물론 pyenv 환경이라면 잘 안된다.$(which python2) 를 작성한 환경에 맞추어 /Users/keisuke.nakata/.pyenv/versions/gcloudsdk/bin/python2 등으로 직접 pyenv 의 Python 실행 환경을 읽으러 가게 해도 안된다
( ImportError: No module named platform 에서 화난다. 파이썬 라이브러리를 잘 읽지 못한 것 같다)

해결에 대한 길



그래서 zsh + virtualenv 환경에서 Google Cloud SDK 설치 - dackdive's blog 을 참고로, 직접 Python 의 실행 환경을 지정해 인스톨 스크립트류를 두드려 가기로 한다.
이하에서는, 공식으로부터 다운로드해 해동한 google-cloud-sdk/ 를, 만일 /Users/keisuke.nakata/bin/google-cloud-sdk/ 에 둔 것으로서 이야기를 진행한다.

먼저 Google Cloud SDK를 실행하려는 Python 실행 환경의 경로를 설정합니다.
export CLOUDSDK_PYTHON=/Users/keisuke.nakata/.pyenv/versions/gcloudsdk/bin/python2

상기는 ~/.bash_profile 당에라도 써 두면 좋다.

그리고 install.sh 를 두드리고 싶다. 이 녀석을 두드리려고 했기 때문에 내부에서 실행중인 스크립트를 직접 두드려 :
$CLOUDSDK_PYTHON /Users/keisuke.nakata/bin/google-cloud-sdk/bin/bootstrapping/install.py

에러가 나지 않고, 여러가지 들리기 시작하면 OK
끝나면, 일단 쉘을 재기동.

다음으로, gcloud init 적인 것을 실행하고 싶다. 그러나 여기에서도 다시 빠지기 때문에, 이 언제나 직접 두드리러 간다:
$CLOUDSDK_PYTHON /Users/keisuke.nakata/bin/google-cloud-sdk/lib/gcloud.py init

브라우저가 일어나서 인증을 요구할 것.

여기까지 오면, 후에는 gcloud 커멘드에 앨리어스(alias)를 걸면 된다. ~/.bash_profile 당,
alias gcloud="$CLOUDSDK_PYTHON /Users/keisuke.nakata/bin/google-cloud-sdk/lib/gcloud.py"
alias dev_appserver="$CLOUDSDK_PYTHON /Users/keisuke.nakata/bin/google-cloud-sdk/bin/dev_appserver.py"

추가 (해 source ). 만약 dev_appserver 이외의 커멘드도 실행하고 싶은 경우는, 같은 방법으로 별칭을 붙이면 OK라고 생각한다.

로컬로 AppEngine 개발 서버를 시작하십시오.



(원래 이것을 원하기 위해 Google Cloud SDK를 원했습니다.)
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
cd python-docs-samples/appengine/standard/flask/hello_world
pip install -t lib -r requirements.txt  # flask は AppEngine に含まれていないので、lib/ 以下に配置しておく必要がある
dev_appserver $PWD

그래서,
INFO     2017-11-06 12:53:51,688 devappserver2.py:116] Skipping SDK update check.
INFO     2017-11-06 12:53:51,841 api_server.py:313] Starting API server at: http://localhost:62371
INFO     2017-11-06 12:53:51,844 dispatcher.py:226] Starting module "default" running at: http://localhost:8080
INFO     2017-11-06 12:53:51,849 admin_server.py:116] Starting admin server at: http://localhost:8000

같은 로그가 표시되면 브라우저에서 localhost:8000로 날아가면 로컬로 AppEngine 개발 서버가 시작되고 있다.



왠지 여러 낡았지만 아마 문제없이 움직이고 있다.



부작용



보완이 효과가 없다.

참고 자료


  • zsh + virtualenv 환경에서 Google Cloud SDK 설치 - dackdive's blog
  • python - Is there any way to use gcloud with python3? - Stack Overflow
  • Using the Local Development Server  | App Engine standard environment for Python  |  Google Cloud Platform
  • Download the SDK for App Engine | App Engine standard environment for Python  |  Google Cloud Platform
  • 좋은 웹페이지 즐겨찾기