簡體   English   中英

請求模塊不適用於 Python3,但適用於 Python

[英]Requests Module not working with Python3 but works with python

當我輸入時,它顯示我已經安裝了請求模塊: pip3 install requests

回復:

Requirement already satisfied: requests in /usr/local/lib/python3.7/site-packages (2.24.0)
Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/site-packages (from requests) (2.9)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/site-packages (from requests) (1.25.8)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/site-packages (from requests) (2019.11.28)
Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/site-packages (from requests) (3.0.4)

所以當我用代碼創建一個名為 http.py 的文件時:

import requests

url = "https://google.com"
response = requests.get(url)
print(f"your request to {url} came back w/ status code {response.status_code}")

我收到一條錯誤消息:

Traceback (most recent call last):
  File "23_Making-HTTP-Requests/http.py", line 2, in <module>
    import requests
  File "/usr/local/lib/python3.7/site-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/usr/local/lib/python3.7/site-packages/urllib3/__init__.py", line 7, in <module>
    from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 11, in <module>
    from .exceptions import (
  File "/usr/local/lib/python3.7/site-packages/urllib3/exceptions.py", line 2, in <module>
    from .packages.six.moves.http_client import IncompleteRead as httplib_IncompleteRead
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
  File "/usr/local/lib/python3.7/site-packages/urllib3/packages/six.py", line 199, in load_module
    mod = mod._resolve()
  File "/usr/local/lib/python3.7/site-packages/urllib3/packages/six.py", line 113, in _resolve
    return _import_module(self.mod)
  File "/usr/local/lib/python3.7/site-packages/urllib3/packages/six.py", line 82, in _import_module
    __import__(name)
  File "/Users/colechalland/Code/Python-3/Modern_Python3_Bootcamp/23_Making-HTTP-Requests/http.py", line 5, in <module>
    response = requests.get(url)
AttributeError: module 'requests' has no attribute 'get'

但是當我用 python2 運行這段代碼時:

import requests

url = "https://google.com"
response = requests.get(url)
print(response.status_code)

我沒有錯誤並打印出來: 200

我曾嘗試使用 pip3 卸載和重新安裝請求,但這並不能解決問題。 奇怪的是,當我使用相同的代碼在終端中運行 python3 時,它可以工作:

Python 3.7.3 (default, Jun 19 2019, 07:38:49)
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> url = "https://google.com"
>>> response = requests.get(url)
>>>
>>> print(f"your request to {url} came back w/ status code {response}")
your request to https://google.com came back w/ status code <Response [200]>
>>>

問題在於您的http.py文件,只需將其重命名為其他名稱即可。 有一個http 包,底層庫 ( urllib3 ) 正在urllib3導入一些模塊。

你的 cwd 中有一個名為 requests.py 的文件嗎? 如果它在那里,那么你應該重命名它並確保它與 python 的任何其他模塊不匹配,否則你會得到一個錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM