Mac gcloud install ImportError: нет модуля с именем __future__

При установке gcloud для Mac я получаю эту ошибку, когда запускаю команду install.sh согласно документам здесь < / а>:

Traceback (most recent call last):
  File "/path_to_unzipped_file/google-cloud-sdk/bin/bootstrapping/install.py", line 8, in <module>
    from __future__ import absolute_import

Я прокрутил и повторил кое-что в сценарии оболочки установки. Он правильно устанавливает переменные среды (указывает на мою установку python по умолчанию, указывая на правильное расположение gcloud SDK).

Если я просто войду в интерпретатор python (используя тот же питон по умолчанию, на который указывает сценарий установки при запуске install.py), я могу импортировать модуль без проблем:

>>> from __future__ import absolute_import
>>> 

Стоит отметить только другую информацию: моя настройка python по умолчанию - это виртуальная среда, которую я создаю из python 2.7.15, установленного через brew. Виртуальная среда python bin находится первой в моем PATH, поэтому python, python2 и python2.7 все вызывают правильный двоичный файл. У меня пока не было других проблем с установкой пакетов в этой установке.

Если я повторю последнюю строку скрипта install.sh, который вызывает скрипт install.py, он показывает /path_to_virtualenv/bin/python -S /path_to_unzipped_file/google-cloud-sdk/bin/bootstrapping/install.py, который является правильным питоном. Или я что-то упускаю?


person KevinTydlacka    schedule 30.01.2019    source источник


Ответы (3)


В скрипте используется -S переключатель командной строки, который отключает загрузку site module при запуске.

Однако это специальный специальный модуль site, установленный в virtualenv, который заставляет virtualenv работать. Таким образом, переключатель -S и virtualenvs несовместимы, при этом -S набор фундаментальных операций импорта, таких как from __future__, полностью прекращается.

Вы можете удалить переключатель -S из команды install.bat или использовать сценарий оболочки, чтобы удалить его из командной строки, когда вы вызываете свой настоящий виртуальный Python.

person Martijn Pieters    schedule 30.01.2019
comment
Спасибо, это работает! Однако после успешной установки gcloud любая попытка использовать gcloud приводит к той же ошибке. Я открыл новый вопрос, поскольку технически это новая проблема, и этот вопрос решен: stackoverflow.com/questions/54448868/ - person KevinTydlacka; 30.01.2019

У меня была ошибка ниже при попытке запустить команды gcloud.

  File "/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/lib/gcloud.py", line 20, in <module>
    from __future__ import absolute_import
ImportError: No module named __future__

Если ваш virtualenv получен автоматически, вы можете указать переменную среды CLOUDSDK_PYTHON, т.е. set -x CLOUDSDK_PYTHON /usr/bin/python, чтобы не использовать virtualenv python.

person Alesso    schedule 20.02.2019

В google-cloud-sdk/install.sh перейдите к последней строке, удалите переменную $CLOUDSDK_PYTHON_ARGS, как показано ниже.

"$CLOUDSDK_PYTHON" $CLOUDSDK_PYTHON_ARGS "${CLOUDSDK_ROOT_DIR}/bin/bootstrapping/install.py" "$@"

"$CLOUDSDK_PYTHON" "${CLOUDSDK_ROOT_DIR}/bin/bootstrapping/install.py" "$@"
person Krishna    schedule 08.09.2019