Ошибка Python: 'NoneType' object has no attribute 'encode'
При выполнении запроса выводит вот такую ошибку
balance = client.get_asset_balance(asset='BTC')
File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\binance\client.py", line 1979, in get_asset_balance
res = self.get_account(**params)
File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\binance\client.py", line 1954, in get_account
return self._get('account', True, data=params)
File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\binance\client.py", line 371, in _get
return self._request_api('get', path, signed, version, **kwargs)
File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\binance\client.py", line 334, in _request_api
return self._request(method, uri, signed, **kwargs)
File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\binance\client.py", line 312, in _request
kwargs = self._get_request_kwargs(method, signed, force_params, **kwargs)
File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\binance\client.py", line 270, in _get_request_kwargs
kwargs['data']['signature'] = self._generate_signature(kwargs['data'])
File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\binance\client.py", line 223, in _generate_signature
m = hmac.new(self.API_SECRET.encode('utf-8'), query_string.encode('utf-8'), hashlib.sha256)
AttributeError: 'NoneType' object has no attribute 'encode'
В чём может быть проблема ???
from binance.client import Client
from binance import ThreadedWebsocketManager
from binance.enums import *
import os
import time
import math
api_key = os.environ.get('my_api_key')
api_secret = os.environ.get('my_api_secret')
client = Client(api_key, api_secret)
balance = client.get_asset_balance(asset='BTC')
print(balance)
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Ошибка 'NoneType' object has no attribute 'encode' говорит, что в какой-то переменной, имеющей значение None был вызван атрибут encode, под это подходит self.API_SECRET и query_string в строке:
m = hmac.new(self.API_SECRET.encode('utf-8'), query_string.encode('utf-8'), hashlib.sha256)
Но, маловероятно, что библиотека не составила строку в query_string, поэтому причина в self.API_SECRET
Согласно примеру API_SECRET задается в конструкторе:
client = Client(api_key, api_secret)
У вас эти значения берутся из переменных окружения, причем через метод get, который вернет None, если указанной переменной не будет:
api_key = os.environ.get('my_api_key')
api_secret = os.environ.get('my_api_secret')

