Неисправность API Google - ImportError: невозможно импортировать имя "build" - PullRequest
0 голосов
/ 17 мая 2019

Сначала я надеялся, что смогу найти эту проблему где-нибудь в Интернете, но я искал некоторое время и не мог найти никого с подобной проблемой.Когда я пытаюсь запустить модуль googleapiclient, он где-то выходит из строя - и я не уверен, что происходит не так.Чтобы проверить это, я начал запускать следующий файл:

import googleapiclient
print('Step one!')
import googleapiclient.discovery
print('Step two!')
from googleapiclient.discovery import build
print('Yay! All steps complete!')

Первый импорт проходит успешно, так как первый оператор печати выполнен успешно.Однако после этого все, похоже, идет не так:

Step one!
Traceback (most recent call last):
  File "c:/Users/Bram/Documents/My Project/src/test.py", line 3, in <module>
    import googleapiclient.discovery
  File "C:\Users\Bram\AppData\Local\Programs\Python\Python36-32\lib\site-packages\googleapiclient\discovery.py", line 32, in <module>
    from six.moves import http_client
  File "C:\Users\Bram\AppData\Local\Programs\Python\Python36-32\lib\site-packages\six.py", line 92, in __get__
    result = self._resolve()
  File "C:\Users\Bram\AppData\Local\Programs\Python\Python36-32\lib\site-packages\six.py", line 115, in _resolve
    return _import_module(self.mod)
  File "C:\Users\Bram\AppData\Local\Programs\Python\Python36-32\lib\site-packages\six.py", line 82, in _import_module
    __import__(name)
  File "C:\Users\Bram\AppData\Local\Programs\Python\Python36-32\lib\http\client.py", line 71, in <module>
    import email.parser
  File "C:\Users\Bram\AppData\Local\Programs\Python\Python36-32\lib\email\parser.py", line 12, in <module>
    from email.feedparser import FeedParser, BytesFeedParser
  File "C:\Users\Bram\AppData\Local\Programs\Python\Python36-32\lib\email\feedparser.py", line 27, in <module>
    from email._policybase import compat32
  File "C:\Users\Bram\AppData\Local\Programs\Python\Python36-32\lib\email\_policybase.py", line 9, in <module>
    from email.utils import _has_surrogates
  File "C:\Users\Bram\AppData\Local\Programs\Python\Python36-32\lib\email\utils.py", line 33, in <module>
    from email._parseaddr import quote
  File "C:\Users\Bram\AppData\Local\Programs\Python\Python36-32\lib\email\_parseaddr.py", line 16, in <module>
    import time, calendar
  File "c:\Users\Bram\Documents\My Project\src\calendar.py", line 5, in <module>
    from googleapiclient.discovery import build
ImportError: cannot import name 'build'

Я попытался принудительно переустановить модуль, используя pip.Я установил любой пакет, который люди предложили в аналогичных темах, где у людей возникли проблемы с этим пакетом, (речь идет о apiclient, httplib2, oauth2client и uritemplate) , и я действительноЯ запутался в этой трассировке, поскольку в моем коде есть две разные строки.

Что я делаю не так?

1 Ответ

2 голосов
/ 17 мая 2019

Вы вызвали круговой импорт.Ваш файл называется calendar.py, что скрывает стандартный библиотечный модуль с тем же именем.Как вы можете видеть в трассировке, _parseaddr.py импортирует calendar, ожидая найти модуль stdlib, но вместо этого находит ваш, и теперь находится в круге.

Переименуйте ваш файл во что-то другое.

...