【问题标题】:when importing requests in pycharm, Import error occurs在pycharm中导入请求时,出现导入错误
【发布时间】:2019-10-20 13:59:19
【问题描述】:

导入请求时,出现如下错误提示。

    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中仍然会出现。

【问题讨论】:

  • 显示您的代码。以及从单词“Traceback”开始的完整错误消息。您是否创建了文件 requests.py ?它可能会尝试从您的文件 requests.py 而不是模块 requests 中导入它。 IDLE 使用相同的 Python 吗?您可能安装了两个 python,一个已正确安装 requests,它可以工作,而其他工具可能使用另一个 Python,它的模块已损坏 requests,但它不起作用。
  • 您使用的是什么版本的请求? (使用外壳,requests.__version__,);你确定你导入了正确的包并且 IDE 有正确的虚拟环境/路径吗?
  • 我已经编辑了所有代码和回溯。我在 PyCharm 中使用 python 3.7,并且我提供了 python3.7 exe 的正确路径。我已经在 IDLE 中使用来自同一路径的 python 尝试了代码,它工作正常

标签: python pip pycharm


【解决方案1】:

在您的回溯中注意这些行:

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 导入某些内容,最终尝试从requests 导入Session

  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,你的问题应该得到解决

【讨论】:

    猜你喜欢
    • 2019-05-13
    • 2016-03-05
    • 2022-11-06
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    相关资源
    最近更新 更多