web-dev-qa-db-ja.com

python3でgcloudを使用する方法はありますか?

Python3でgcloudについて少し混乱しています。

Gcloudをpython3 envにインストールし、例を試しました Quickstart for Python App Engineフレキシブル環境

「Google Cloud SDKが必要です」と言われたので、SDKをインストールしました。 SDKを含むすべてのプロセス(SDKを含む)、python2 envが必要です。

ここに質問があります、python3(正式に)でgcloudを実行することはまだ不可能ですか? (gcloudライブラリを使用したSDKとpython2が最適な方法ですか?)

27
piper

この問題を回避するには、Python 2(システムでpython2という名前を付けたもの)へのパスを指定します。

$ export CLOUDSDK_PYTHON=$(which python2)
$ ./install.sh

エクスポートを.bashrcまたは.zshrcファイルに追加することをお勧めします。

17
mmla

gcloud-pythonCloud SDKのようにgcloud-cli は、やや無関係な製品です。 gcloud-cliを実行するためにpython 2.7.xが必要なのは事実ですが、これはgcloud-pythonライブラリでpython3を使用することを妨げるものではありません。

python 2.7xと3.5の複数のバージョンをインストールする場合(python3をデフォルトにすることもできます)、CLOUDSDK_PYTHON環境変数を設定してpython = 2.7.xインタープリターを使用すると、プロジェクトでpython3を使用しながらgcloud-cliを実行できます。

たとえば、Windowsでは、Cloud SDKは独自のpythonをパッケージ化します。これは、システムにある他のバージョンと競合しません。gcloud-cliの純粋なランタイム依存関係です。

8
cherba

install.sh、python 2は、より普遍的だと思います。macOSを実行している場合、echo "export CLOUDSDK_PYTHON=/your/path/to/python3" >> ~/.bash_profileは、gcloudがpython3にあるものを使用できるようにします。

動作しない場合は、python 2のいずれかを指定し、独自の作業でpython 3のみを使用して問題を解決します。

# if CLOUDSDK_PYTHON is empty
if [ -z "$CLOUDSDK_PYTHON" ]; then
  # if python2 exists then plain python may point to a version != 2
  if _cloudsdk_which python2 >/dev/null; then
    CLOUDSDK_PYTHON=python2
  Elif _cloudsdk_which python2.7 >/dev/null; then
    # this is what some OS X versions call their built-in Python
    CLOUDSDK_PYTHON=python2.7
  Elif _cloudsdk_which python >/dev/null; then
    # Use unversioned python if it exists.
    CLOUDSDK_PYTHON=python
  Elif _cloudsdk_which python3 >/dev/null; then
    # We support python3, but only want to default to it if nothing else is
    # found.
    CLOUDSDK_PYTHON=python3
  else
    # This won't work because it wasn't found above, but at this point this
    # is our best guess for the error message.
    CLOUDSDK_PYTHON=python
  fi
fi
1
minggli

システム要件では、python 2.7.x https://cloud.google.com/sdk/downloads

とにかくpython3でgcloudを実行したいのはなぜですか?

1
marcadian