Ошибка атрибута в pydev

Недавно установленный PyDev для Eclipse Oxygen 3 в WIndows 10. Как новый программист, я пишу базовые программы, работая над книгой «научиться программировать». В примере, над которым я работаю, используется модуль под названием «snaps», который находится в «pygame». Приведенная ниже программа отлично работает в среде IDE Python Shell.

import snaps

temp = snaps.get_weather_temp(latitude=47.61, longitude=-122.33)

print('The temperature in Seattle is:', temp)

Продукт: Температура в Сиэтле: 60

Но когда я запускаю это в PyDev, я получаю:

Traceback (most recent call last):
File "C:\Users\mando\eclipse- 
workspace\BeginToCodeWithPython\Chapter4\ActualTemp.py", line 9, in <module>
temp = snaps.get_weather_temp(latitude=47.61, longitude=-122.33)
AttributeError: module 'snaps' has no attribute 'get_weather_temp'

Я подтвердил, что путь Python установлен правильно в окнах, и интерпретатор PyDev также установлен правильно. Я добавил все библиотеки, папки сценариев и т. Д. Я могу в настройках проекта и перспективы. Я даже добавил папку pygame в свою рабочую область. Но я все еще получаю ошибки.

Я подтвердил, что get_weather_temp находится в модуле снимков с помощью функции help () и работает в среде IDE, но не в PyDev.

Любая помощь будет оценена.

0
0
306
1

Ответы 1

Я думаю, что это может вам помочь. Если я не ошибаюсь, PyDev нужно указать, где искать «модули» / «библиотеки», где при их установке IDE использует значение по умолчанию, а pydev будет использовать свою собственную среду. (ниже фрагмент из комментариев), если у вас есть какие-либо вопросы, просто задайте их - все готово, вам просто нужно ввести свой собственный ключ api. (по умолчанию это кельвин, поэтому вам придется преобразовать в f или c, я не торопился, если вы хотите это сделать, я нашел пример здесь)

также это - это то, как выглядит ответ json, если вам интересно. вывод будет выглядеть так: текущая температура Сиэтла составляет 284,02

import requests
import json
# settings
key = 'put your api key here' #you can get a free api from https://home.openweathermap.org/api_keys 
#takes less then 10 seconds to make an account, no verification.
base = 'http://api.openweathermap.org/data/2.5/weather?q='
id = '&appid='
city = 'Seattle,US' # found here; https://openweathermap.org/ you could add exceptions here for failed responses or a method for the user to input their own request etc)
url = base + city + id + key #following their api structure, probably much better ways to do this lol

response = requests.get(url) #send the request to the api and brings it back
data = response.json() #saves the response as json (seemed easier they had multiple options)
json_str = json.dumps(data) #turn the response into a string
resp_dict = json.loads(json_str) #turn string into dict (i learned today to turn it into a dict it has to be a string,i couldn't figure out to print specifics from a str so i converted to a dict)
temp = resp_dict['main']['temp'] #grabs the temp from the dict
loc = resp_dict['name'] #grabs the location defined above (seattle)
print('the current temp of {} is {}'.format(loc,temp)) #(prints the current location and temp)

решил опробовать конвертацию - пользоваться pyowm lib было намного проще. вывод будет выглядеть так: «Текущая температура в Сиэтле составляет 51,57». Я сделал переменные слишком длинными, чтобы вы могли следить за ними.

import json
import pyowm


owm = pyowm.OWM('your key here')
location = 'Seattle' #i only made this a seperate variable so i could call it later/change it
observation = owm.weather_at_place(location) #tells the api where the location is
weather = observation.get_weather() #gets the weather of location above
temperature = weather.get_temperature('fahrenheit')
temperature_to_string = json.dumps(temperature)
temperature_string_to_dictionary = json.loads(temperature_to_string)
temperature = temperature_string_to_dictionary['temp'] 
print('The current temp in {} is {}'.format(location, temperature))

Спасибо. Я просмотрел эту ветку. Я сделал большую часть из того, что он предлагал, но он все еще вызывает ошибку. Я могу заставить PyDev импортировать и идентифицировать pygame и распечатать его версию. Но он все равно не найдет этот атрибут в модуле привязок. Он найдет другие атрибуты в снимках, но не get_weather_temp.

HerdingDogRescuer 11.04.2018 15:25

Эй, а какую версию Python вы используете? похоже, 3.x не поддерживается снимками - может быть ваш проблема

Justin 11.04.2018 15:49

Я использую Python 3.6.4. Модуль привязок, который я использую, является частью pygame. Это не такая уж большая папка из Стэнфорда. Snaps отлично работает в IDE, но не в Eclipse. Я обнаружил, что Anaconda не может найти pygame. Я готов бросить на это полотенце. Это были часы, часы, часы.

HerdingDogRescuer 11.04.2018 17:11

Хорошо, хорошо, я сделал для вас небольшой фрагмент, надеюсь, вы сможете извлечь из него уроки, я научился нескольким вещам, делая это lol :) (отредактировал мой основной пост)

Justin 11.04.2018 18:00

Другие вопросы по теме