Ошибка sqlite3 при установке Google Cloud SDK с несколькими версиями py2.7

Впервые переходим с настройки AWS на GCE, так что будьте добры ответить на мои наивные вопросы.

На шаге ./google-cloud-sdk/install.sh я столкнулся со следующей ошибкой:

  Welcome to the Google Cloud SDK!
  Traceback (most recent call last):
    File "/Users/t/Desktop/./google-cloud-sdk/bin/bootstrapping/install.py", line 8, in <module>
      import bootstrapping
    File "/Users/t/Desktop/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 19, in <module>
      from googlecloudsdk.core.credentials import store as c_store
    File "/Users/t/Desktop/google-cloud-sdk/lib/googlecloudsdk/core/credentials/store.py", line 34, in <module>
      from googlecloudsdk.core.credentials import creds
    File "/Users/t/Desktop/google-cloud-sdk/lib/googlecloudsdk/core/credentials/creds.py", line 40, in <module>
      import sqlite3
    File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sqlite3/__init__.py", line 24, in <module>
      from dbapi2 import *
    File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sqlite3/dbapi2.py", line 28, in <module>
      from _sqlite3 import *
  ImportError: No module named _sqlite3

При внимательном рассмотрении я заметил, что в моем /usr/local/Cellar/python есть две версии python2.7, а именно. 2.7.10_2 и 2.7.11.

Как ни странно, когда я захожу в командную строку python, эта проблема:

  Python 2.7.10 (default, Oct  6 2017, 22:29:07)
  [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
  Type "help", "copyright", "credits" or "license" for more information.

  >>> import sqlite3
  >>> from _sqlite3 import *
  >>> print('hello, this seems to work')
      hello, this seems to work

К сожалению, install.sh получает версию py2.7.11, а не версию Python из системы, я не уверен, что мы можем установить некоторые переменные окружения (например, $CLOUDSDK_PYTHON, прежде чем мы начнем установку).


person envy_intelligence    schedule 08.04.2018    source источник


Ответы (6)


Да, вы должны установить переменную среды $CLOUDSDK_PYTHON так, чтобы она указывала на правильную установку Python. См. аналогичный вопрос: установка google-cloud-sdk не находит правильную версию Python 2.7 в CentOS /usr/local/bin

person Kristen Tracey    schedule 09.04.2018
comment
Если кто-то сталкивается с этой проблемой с диспетчером версий asdf, я смог исправить это, установив $CLOUDSDK_PYTHON для моего системного python в /usr/bin/python3.8. - person Ivan; 19.12.2020

Ударьте эту проблему сегодня, и вот набор команд, которые сработали для меня на CentOS 7:

Некоторые важные моменты:

  • Установите пакет sqlite-devel (название может измениться в зависимости от вашего дистрибутива)
  • Передайте --enable-loadable-sqlite-extensions при настройке интерпретатора Python.
  • Используйте altinstall, чтобы не испортить yum на своем хосте, поскольку он полагается на то, что python2 является интерпретатором по умолчанию.
sudo yum install gcc openssl-devel bzip2-devel libffi-devel sqlite-devel
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tgz
sudo tar xzf Python-3.8.6.tgz
cd Python-3.8.6
sudo ./configure --enable-optimizations --enable-loadable-sqlite-extensions
sudo make altinstall
sudo rm /usr/src/Python-3.8.6.tgz
sudo ln -s /usr/local/bin/python3.8 /usr/bin/python3
sudo ln -s /usr/local/bin/python3.8 /usr/local/bin/python3
person Jean Spector    schedule 14.10.2020

Если вы используете плагин Oh-My-ZSH, вам нужно вручную отредактировать файл .zshrc.

ДОБАВЬТЕ строку ниже:

export CLOUDSDK_PYTHON="/usr/bin/python3"

Под:

source $ZSH/oh-my-zsh.sh

Сохраните файл .zshrc и перезапустите оболочку, чтобы увидеть изменения. см. пример ниже

person TH-C013    schedule 02.05.2021
comment
Разве это не то же самое, что и другой ответ? - person Anton Krug; 02.05.2021
comment
@anton-krug Just source .zshrc сохранит изменения только для этого конкретного сеанса оболочки. Необходимо вручную отредактировать файл .zshrc, чтобы изменения сохранялись для всех остальных сеансов оболочки. - person TH-C013; 03.05.2021
comment
О, ты прав. Когда у вас будет достаточно репутации, их лучше всего поместить в комментарии к существующим ответам/вопросам, а не делать отдельные ответы. - person Anton Krug; 03.05.2021

Я использую pyenv и устанавливаю разные версии Python, и мне нужно настроить CLOUDSDK_PYTHON, чтобы он указывал на системный python под /usr/local/bin, чтобы он работал.

Указание на что-то внутри pyenv, например, /home/user/.pyenv/shims/python или /home/user/.pyenv/versions/2.7.15/bin/python2, не решит эту проблему.

person Chuan    schedule 04.03.2020

Это проблема, когда при запуске установочной ссылки cloudsql не может найти исполняемый файл python. Поэтому для ее решения я принял этот метод.

  1. which python Это даст путь к python, что-то вроде usr/bin/python

  2. сделать симлинк для выполнения

    ls -s usr/bin/python usr/local/bin/python

person shaharyar    schedule 12.11.2020

Вам нужно установить среду, как если бы вы использовали oh-my-zsh -

export CLOUDSDK_PYTHON=/usr/bin/python3

а потом -

source .zshrc
person Prashant Pandey    schedule 11.03.2021