Ошибка 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')

Решением будут следующие варианты:

  1. Прописать в систему эти переменные окружения: введите сюда описание изображения

  2. Запускать, например, через bat/cmd, указав в нем переменные окружения:

    set my_api_key="11111111111"
    set my_api_secret="22222222222"
    
    python main.py
    
    pause
    
→ Ссылка