首页 > 解决方案 > 在pycharm中导入请求时,出现导入错误

问题描述

导入请求时,出现以下错误消息。

    Traceback (most recent call last):
  File "C:/Users/moter/PycharmProjects/compsci/alarm_project/get_events.py", line 1, in <module>
    import requests
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\__init__.py", line 43, in <module>
    import urllib3
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\__init__.py", line 7, in <module>
    from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 11, in <module>
    from .exceptions import (
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\exceptions.py", line 2, in <module>
    from .packages.six.moves.http_client import IncompleteRead as httplib_IncompleteRead
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\packages\six.py", line 199, in load_module
    mod = mod._resolve()
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\packages\six.py", line 113, in _resolve
    return _import_module(self.mod)
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\packages\six.py", line 82, in _import_module
    __import__(name)
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 71, in <module>
    import email.parser
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\email\parser.py", line 12, in <module>
    from email.feedparser import FeedParser, BytesFeedParser
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\email\feedparser.py", line 27, in <module>
    from email._policybase import compat32
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\email\_policybase.py", line 9, in <module>
    from email.utils import _has_surrogates
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\email\utils.py", line 33, in <module>
    from email._parseaddr import quote
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\email\_parseaddr.py", line 16, in <module>
    import time, calendar
  File "C:\Users\moter\PycharmProjects\compsci\alarm_project\calendar.py", line 1, in <module>
    from O365 import Account
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\O365\__init__.py", line 8, in <module>
    from .account import Account
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\O365\account.py", line 1, in <module>
    from .connection import Connection, Protocol, MSGraphProtocol
  File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\O365\connection.py", line 9, in <module>
    from requests import Session
ImportError: cannot import name 'Session' from 'requests' (C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\__init__.py)

代码:

import requests
import sys

print(sys.path)

r = requests.get("https://openweathermap.org/")
print(r.status_code)

我已经更新了来自 pip 和 pycharm 本身的请求。此外,我尝试了不同的 python 版本并且错误仍然存​​在。该错误在 IDLE 中不会发生,但在其他 IDE 中仍然会发生。

标签: pythonpippycharm

解决方案


请注意回溯中的这些行:

File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\email\_parseaddr.py", line 16, in <module>
import time, calendar
File "C:\Users\moter\PycharmProjects\compsci\alarm_project\calendar.py", line 1, in <module>
from O365 import Account

您有一个名为的文件,该文件与模块尝试导入calendar.py的内容冲突。email然后,您的文件calendar.py会继续导入某些O365内容,最终尝试从中Session导入requests

  from O365 import Account
File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\O365\__init__.py", line 8, in <module>
  from .account import Account
File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\O365\account.py", line 1, in <module>
  from .connection import Connection, Protocol, MSGraphProtocol
File "C:\Users\moter\AppData\Local\Programs\Python\Python37\lib\site-packages\O365\connection.py", line 9, in <module>
  from requests import Session

由于文件名冲突,最终成为循环导入。所以只需将您的calendar.py,例如重命名为mycalendar.py,您的问题就应该得到解决


推荐阅读