pyenv 환경에서 Google Cloud SDK 설치
하고 싶은 일
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 개발 서버가 시작되고 있다.
왠지 여러 낡았지만 아마 문제없이 움직이고 있다.
부작용
보완이 효과가 없다.
참고 자료
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 개발 서버가 시작되고 있다.
왠지 여러 낡았지만 아마 문제없이 움직이고 있다.
부작용
보완이 효과가 없다.
참고 자료
export CLOUDSDK_PYTHON=/Users/keisuke.nakata/.pyenv/versions/gcloudsdk/bin/python2
$CLOUDSDK_PYTHON /Users/keisuke.nakata/bin/google-cloud-sdk/bin/bootstrapping/install.py
$CLOUDSDK_PYTHON /Users/keisuke.nakata/bin/google-cloud-sdk/lib/gcloud.py init
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"
(원래 이것을 원하기 위해 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 개발 서버가 시작되고 있다.왠지 여러 낡았지만 아마 문제없이 움직이고 있다.
부작용
보완이 효과가 없다.
참고 자료
Reference
이 문제에 관하여(pyenv 환경에서 Google Cloud SDK 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/keisuke-nakata/items/0255104b7f807a0e499f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)