关于python:Google Cloud SDK安装失败UnicodeDecodeError:’ascii’编解码器

Google Cloud SDK install failed UnicodeDecodeError: 'ascii' codec

在我的Windows 10计算机上安装Google Cloud SDK时出现以下错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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
tpath.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,更具体地说,我在c:androidsdkcloud sdkgoogle cloud sdkplatformundledpythonpython.exe上安装了python版本2.7.13。

我还试图设置CLOUDSDK_PYTHON变量,但没有成功。

注意:我看到了这个问题,但是我有一个不同版本的云SDK(213.0.0),在我的代码中没有找到上面提到的部分,所以我不认为这是一个重复的问题。

编辑1:

my ntpath.py第63-90行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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"编解码器无法解码位置13中的字节0xe2:序号不在范围(128)内

位桶管道:gCloud崩溃(unicodedecodeerror)

注意,我在gcloud路径中没有任何非ASCII字符,我用以下命令检查过它:gci -recurse . | where {$_.Name -match"[^\u0000-\u007F]"}

还有其他解决方法吗?


只是要尝试的事情列表:

  • 从https://www.python.org/downloads/release/python-2715/安装python。记住python二进制文件的位置。设为CLOUDSDK_PYTHON

  • 显示带有变量集的打印输出。

  • 确保变量确实已设置。

  • C:\中(或C:\AndroidSdk中,但最好是C:\中):在https://superuser.com/questions/237533/find-files-with-non-ascii-characters-in-filenames-in-windows-xp中运行gci命令,显示输出。或者从同一个问题运行python程序。

  • 会被4找到,但第13个字符似乎是\。尝试重新创建目录,给AndroidSDK一个较短/较长的名称,看它是否仍然是第13个字符