#python #python-3.x #python-requests
#python #python-3.x #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]>
>>>
Комментарии:
1. Есть ли вероятность, что у вас есть локальный файл с именем
requests.py
? Этот код должен работать на Python3 (также протестировал его на моей машине)2. ^ Я так не считаю
3. Попробуйте:
import requests print(type(requests))
— результат этого кода должен быть<class 'module'>
. Что вы получаете?4. когда вы запускаете код под python 2.7 — используете ли вы
http.py
в качестве имени файла?5. Попробуйте приведенный выше консольный код в текущем каталоге, чтобы проверить, есть ли какие-либо проблемы в текущем каталоге
Ответ №1:
Проблема в вашем http.py
файле, просто переименуйте его во что-то другое. Существует http-пакет, и базовая библиотека ( urllib3
) импортирует из него некоторые модули.
Ответ №2:
У вас есть файл с именем requests.py в вашем cwd? Если он есть, вам следует переименовать его и убедиться, что он не соответствует ни одному другому модулю python, иначе вы получите сообщение об ошибке.
Комментарии:
1. Имя файла отсутствует requests.py
2. У вас определенно есть файл с именем requests.py , возможно, не в вашем cwd, а где-то в вашем PYTHONPATH, поэтому проверьте путь и удалите его.