Сбой установки Google Cloud SDK UnicodeDecodeError: кодек "ascii"

При установке Google Cloud SDK на мой компьютер с Windows 10 я получил следующую ошибку:

ERROR: gcloud failed to load: 'ascii' codec can't decode byte 0xe1 in position 13: ordinal not in range(128)
    gcloud_main = _import_gcloud_main()
    import googlecloudsdk.gcloud_main
    from googlecloudsdk.calliope import cli
    from googlecloudsdk.calliope import backend
    from googlecloudsdk.calliope import parser_extensions
    from googlecloudsdk.core.updater import update_manager
    from googlecloudsdk.core.updater import installers
    from googlecloudsdk.core.credentials import store
    from googlecloudsdk.core.credentials import creds
    from googlecloudsdk.core.credentials import devshell as c_devshell
    from oauth2client import client
    from oauth2client import crypt
    from oauth2client import _openssl_crypt
    from OpenSSL import crypto
    from OpenSSL import crypto, SSL
    from cryptography import x509
    from cryptography.x509.base import (
    from cryptography.x509.extensions import Extension, ExtensionType
    from asn1crypto.keys import PublicKeyInfo
    from ._elliptic_curve import (
    from ._int import inverse_mod
    from ._perf._big_num_ctypes import libcrypto
    libcrypto_path = find_library('crypto')
    fname = os.path.join(directory, name)
    result_path = result_path + p_path
This usually indicates corruption in your gcloud installation or problems with your Python interpreter.
Please verify that the following is the path to a working Python 2.7 executable:
    C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\python.exe
If it is not, please set the CLOUDSDK_PYTHON environment variable to point to a working Python 2.7 executable.
If you are still experiencing problems, please reinstall the Cloud SDK using the instructions here:
    https://cloud.google.com/sdk/
Traceback (most recent call last):
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\\bin\bootstrapping\install.py", line 12, in <module>
    import bootstrapping
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\bin\bootstrapping\bootstrapping.py", line 44, in <module>
    from googlecloudsdk.core.credentials import store as c_store
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\lib\googlecloudsdk\core\credentials\store.py", line 35, in <module>
    from googlecloudsdk.core.credentials import creds
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\lib\googlecloudsdk\core\credentials\creds.py", line 34, in <module>
    from googlecloudsdk.core.credentials import devshell as c_devshell
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\lib\googlecloudsdk\core\credentials\devshell.py", line 30, in <module>
    from oauth2client import client
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\lib\third_party\oauth2client\client.py", line 51, in <module>
    from oauth2client import crypt
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\lib\third_party\oauth2client\crypt.py", line 45, in <module>
    from oauth2client import _openssl_crypt
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\lib\third_party\oauth2client\_openssl_crypt.py", line 16, in <module>
    from OpenSSL import crypto
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\lib\site-packages\OpenSSL\__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\lib\site-packages\OpenSSL\crypto.py", line 12, in <module>
    from cryptography import x509
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\lib\site-packages\cryptography\x509\__init__.py", line 9, in <module>
    from cryptography.x509.base import (
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\lib\site-packages\cryptography\x509\base.py", line 16, in <module>
    from cryptography.x509.extensions import Extension, ExtensionType
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\lib\site-packages\cryptography\x509\extensions.py", line 13, in <module>
    from asn1crypto.keys import PublicKeyInfo
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\lib\site-packages\asn1crypto\keys.py", line 22, in <module>
    from ._elliptic_curve import (
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\lib\site-packages\asn1crypto\_elliptic_curve.py", line 51, in <module>
    from ._int import inverse_mod
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\lib\site-packages\asn1crypto\_int.py", line 56, in <module>
    from ._perf._big_num_ctypes import libcrypto
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\lib\site-packages\asn1crypto\_perf\_big_num_ctypes.py", line 31, in <module>
    libcrypto_path = find_library('crypto')
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\lib\ctypes\util.py", line 53, in find_library
    fname = os.path.join(directory, name)
  File "C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\lib\ntpath.py", line 85, in join
    result_path = result_path + p_path
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe1 in position 13: ordinal not in range(128)
Failed to install.

Я попытался повторно загрузить установщик, я запускаю его с правами администратора и выбрал папку для установки без каких-либо символов или пробелов, отличных от ascii.

Я также проверил, что установщик успешно установил python, более конкретно у меня есть Python версии 2.7.13 по адресу C:\AndroidSdk\CloudSdk\google-cloud-sdk\platform\bundledpython\python.exe

Я также пытался установить CLOUDSDK_PYTHON переменная без успеха.

Примечание: я видел этот вопрос, но у меня есть другая версия (213.0.0) cloud-sdk, и я не нашел упомянутую часть в своем коде, поэтому я не думаю, что это дублирующий вопрос.

РЕДАКТИРОВАТЬ 1:

Моя строка ntpath.py 63-90:

def join(path, *paths):
    """Join two or more pathname components, inserting "\\" as needed."""
    result_drive, result_path = splitdrive(path)
    for p in paths:
        p_drive, p_path = splitdrive(p)
        if p_path and p_path[0] in '\\/':
            # Second path is absolute
            if p_drive or not result_drive:
                result_drive = p_drive
            result_path = p_path
            continue
        elif p_drive and p_drive != result_drive:
            if p_drive.lower() != result_drive.lower():
                # Different drives => ignore the first path entirely
                result_drive = p_drive
                result_path = p_path
                continue
            # Same drive in different case
            result_drive = p_drive
        # Second path is relative to the first
        if result_path and result_path[-1] not in '\\/':
            result_path = result_path + '\\'
        result_path = result_path + p_path   #85
    ## add separator between UNC and non-absolute path
    if (result_path and result_path[0] not in '\\/' and
        result_drive and result_drive[-1:] != ':'):
        return result_drive + sep + result_path
    return result_drive + result_path

РЕДАКТИРОВАТЬ 2:

Спасибо за ваши предложения. Я также проверил эти вопросы и ответы, но не смог найти решение:

UnicodeDecodeError: кодек "ascii" не может декодировать байт 0xe2 в позиции 13: порядковый номер не в диапазоне (128)

Трубопроводы Bitbucket: сбой gcloud (UnicodeDecodeError)

Обратите внимание, что в пути gcloud нет символов, отличных от ascii, я проверил их с помощью следующей команды: gci -recurse . | where {$_.Name -match "[^\u0000-\u007F]"}

Есть еще идеи как починить?

1 ответ

Решение

Просто список вещей, которые можно попробовать:

  1. установить Python с https://www.python.org/downloads/release/python-2715/. Запомните расположение python двоичный файл. Установите это как CLOUDSDK_PYTHON

  2. Покажите распечатку с установленной переменной.

  3. Убедитесь, что переменная действительно установлена.

  4. В C:\ (или же C:\AndroidSdk, но оптимально C:\): Запустить gci Команда в https://superuser.com/questions/237533/find-files-with-non-ascii-characters-in-filenames-in-windows-xp, показать вывод. Или запустите программу на Python с того же вопроса.

  5. будет найден 4., но 13-й символ, кажется, \, Попробуйте заново создать каталог, давая AndroidSDK более короткое / длинное имя, посмотрите, является ли оно 13-м символом

У меня была такая же проблема, и мне потребовалось время, чтобы решить ее, поэтому вот мои выводы для потомков:

У меня был установлен пакет npm windows-build-tools (используяnpm install --global windows-build-tools), и этот пакет, по-видимому, поставлялся с отдельной установкой Python в C:\Users\[my user]\.windows-build-tools, о которой я забыл. Эта папка также была в моем PATH.

К сожалению, мое имя пользователя Windows содержит символы, отличные от ASCII. Насколько мне известно, у меня нет возможности изменить это, поскольку мой пользователь привязан к учетной записи MS, которой управляет мой работодатель.

Несмотря на то, что я установил SDK в беспроблемном месте (D:\CloudSDK) и установил CLOUDSDK_PYTHON на другую установку Python 2.7.15, я продолжал получать ошибку, описанную в вопросе, пока я не удалил установку python инструментов сборки Windows, а также все остальные следы любую предыдущую установку Python, которую я обнаружил и переустановил 2.7.15. Затем я повторил установку Cloud SDK без связанного Python и использовал свой чистый новый из PATH, который решил проблему.

Может это кому-то поможет.

Для меня window10,

это происходит из-за того, что пути python 2.7 обнаруживаются раньше, чем python 3.7,

Я просто удаляю 2.7 PATH

и SET CLOUDSDK_PYTHON указывают на пути 3.7, и он работает.

Та же проблема с символами, отличными от ascii. Я редактировалcloud_env.bat в корневой папке установки (мой C:\prg\GCP) и УДАЛЕНО, добавив %PATH% (см. ниже) - проблема решена для установки.

Мне также пришлось добавить это руководство в PATH после install: C:\prg\GCP\google-cloud-sdk\bin;C:\prg\GCP\google-cloud-sdk\platform\bundledpython\;

И обновите USERPROFILE=C:\prg\GCP (мой содержал не ascii).

cloud_env.bat

ECHO OFF
CLS
REM SET PATH=C:\prg\GCP\google-cloud-sdk\bin;%PATH%;
SET PATH=C:\prg\GCP\google-cloud-sdk\bin;
cd C:\prg\GCP
ECHO Welcome to the Google Cloud SDK! Run "gcloud -h" to get the list of available commands.
ECHO ---
ECHO ON`
Другие вопросы по тегам