Square API добавить изображение с помощью Python не удается ⇐ Python
-
Гость
Square API добавить изображение с помощью Python не удается
При использовании API Squareup Python для загрузки изображения в каталог происходит сбой в параметре файла. Я опубликую код, ошибку, а затем некоторые замечания относительно документации API.
метод установки №1
На самом деле я использовал requirements.txt, но фактически я установил модуль следующим образом:
$ pip install Squareup Код # Импортируем пакет ОС импортировать ОС # импортируем пакет dotenv из dotenv импорта load_dotenv # Получить текущий рабочий каталог cwd = os.getcwd() # Создайте путь к файлу .env env_path = os.path.join(cwd, '.env') # Загрузите файл .env load_dotenv(dotenv_path=env_path) # Импортировать квадрат из клиента импорта Square.client # инициализируем квадратный API sq_client = Клиент( access_token=os.environ['SQUARE_ACCESS_TOKEN'], окружающая среда = 'производство' ) # Это работает для проверки ключа API и идентификатора доступа для загрузки в производственную среду. т.е. # не песочница результат = sq_client.catalog.upsert_catalog_object( тело = { "idempotency_key": "{UNIQUE_KEY}", "объект": { "тип": "ПУНКТ", "id": "#кофе", "item_data": { "name": "Кофе", "description": "Кофейный напиток", «аббревиатура»: «Ко», "вариации": [ { "тип": "ITEM_VARIATION", "id": "#small_coffee", "item_variation_data": { "item_id": "#кофе", "имя": "Маленький", "pricing_type": "FIXED_PRICING", "price_money": { «сумма»: 300, "валюта": "доллар США" } } }, { "тип": "ITEM_VARIATION", "id": "#large_coffee", "item_variation_data": { "item_id": "#кофе", "name": "Большой", "pricing_type": "FIXED_PRICING", "price_money": { «сумма»: 350, "валюта": "доллар США" } } } ] } } } ) если результат.is_success(): печать(результат.тело) элиф result.is_error(): печать(результат.ошибки) # после этого я мог заглянуть в квадратную витрину и увидеть # образец товара в каталоге витрины. # В качестве дальнейшего теста API, вот информация о # API в примере элемента. Это также работает так, как ожидалось. результат = sq_client.catalog.list_catalog() если результат.is_success(): печать(результат.тело) элиф result.is_error(): печать(результат.ошибки) # Однако это не удается. file_to_upload_path = "./sample_imgs/drdoom.jpeg" # Измените это, чтобы оно указывало на нужный файл. f_stream = open(file_to_upload_path, "rb") результат = sq_client.catalog.create_catalog_image( запрос = { "idempotency_key": "{UNIQUE_KEY}", "изображение": { "тип": "ИЗОБРАЖЕНИЕ", "id": "#image_id", "image_data": { "name": "Имя изображения", "caption": "Подпись к изображению" } } }, файл = f_stream ) если результат.is_success(): печать(результат.тело) элиф result.is_error(): печать(результат.ошибки) Последний вызов API, как указано в комментариях, завершился неудачно. Он генерирует трассировку стека с ошибкой в параметре file = f_stream. Использование операции чтения для f_stream работает, так что дело не в том, что изображение не может быть найдено, а в самом параметре файла.
Что еще интересно: я использовал веб-страницу Square API Explorer и написал точно такой же код, и там он работал. Единственное отличие заключалось в том, что проводник генерирует ключ, а не использует механизм {UNIQUE_KEY}. Я также попытался поместить изображение в качестве равноправного код, чтобы мне не нужно было использовать относительный путь к каталогу. то есть. нет префикса ./sample_imgs.
Подумав, что ошибка может быть связана с версией библиотеки Python и параметром файла, я вернулся к документации Square, чтобы узнать, как они указывают установку SDK. На этой странице есть ссылка на то, как получить пакет SDK, в котором говорится о посещении PyPi. Обратите внимание, что ссылка на PyPi указывает на использование git. Следовательно, я использовал это в своем файле require.txt
requirements.txt для метода №2
# установка Square API для метода №1 #расквитаться # установка Square API для метода №2 с использованием git clone #square-python-sdk git+https://github.com/square/square-python-sdk.git Однако при использовании версии git возникает та же ошибка. Пожалуйста, сообщите.
При использовании API Squareup Python для загрузки изображения в каталог происходит сбой в параметре файла. Я опубликую код, ошибку, а затем некоторые замечания относительно документации API.
метод установки №1
На самом деле я использовал requirements.txt, но фактически я установил модуль следующим образом:
$ pip install Squareup Код # Импортируем пакет ОС импортировать ОС # импортируем пакет dotenv из dotenv импорта load_dotenv # Получить текущий рабочий каталог cwd = os.getcwd() # Создайте путь к файлу .env env_path = os.path.join(cwd, '.env') # Загрузите файл .env load_dotenv(dotenv_path=env_path) # Импортировать квадрат из клиента импорта Square.client # инициализируем квадратный API sq_client = Клиент( access_token=os.environ['SQUARE_ACCESS_TOKEN'], окружающая среда = 'производство' ) # Это работает для проверки ключа API и идентификатора доступа для загрузки в производственную среду. т.е. # не песочница результат = sq_client.catalog.upsert_catalog_object( тело = { "idempotency_key": "{UNIQUE_KEY}", "объект": { "тип": "ПУНКТ", "id": "#кофе", "item_data": { "name": "Кофе", "description": "Кофейный напиток", «аббревиатура»: «Ко», "вариации": [ { "тип": "ITEM_VARIATION", "id": "#small_coffee", "item_variation_data": { "item_id": "#кофе", "имя": "Маленький", "pricing_type": "FIXED_PRICING", "price_money": { «сумма»: 300, "валюта": "доллар США" } } }, { "тип": "ITEM_VARIATION", "id": "#large_coffee", "item_variation_data": { "item_id": "#кофе", "name": "Большой", "pricing_type": "FIXED_PRICING", "price_money": { «сумма»: 350, "валюта": "доллар США" } } } ] } } } ) если результат.is_success(): печать(результат.тело) элиф result.is_error(): печать(результат.ошибки) # после этого я мог заглянуть в квадратную витрину и увидеть # образец товара в каталоге витрины. # В качестве дальнейшего теста API, вот информация о # API в примере элемента. Это также работает так, как ожидалось. результат = sq_client.catalog.list_catalog() если результат.is_success(): печать(результат.тело) элиф result.is_error(): печать(результат.ошибки) # Однако это не удается. file_to_upload_path = "./sample_imgs/drdoom.jpeg" # Измените это, чтобы оно указывало на нужный файл. f_stream = open(file_to_upload_path, "rb") результат = sq_client.catalog.create_catalog_image( запрос = { "idempotency_key": "{UNIQUE_KEY}", "изображение": { "тип": "ИЗОБРАЖЕНИЕ", "id": "#image_id", "image_data": { "name": "Имя изображения", "caption": "Подпись к изображению" } } }, файл = f_stream ) если результат.is_success(): печать(результат.тело) элиф result.is_error(): печать(результат.ошибки) Последний вызов API, как указано в комментариях, завершился неудачно. Он генерирует трассировку стека с ошибкой в параметре file = f_stream. Использование операции чтения для f_stream работает, так что дело не в том, что изображение не может быть найдено, а в самом параметре файла.
Что еще интересно: я использовал веб-страницу Square API Explorer и написал точно такой же код, и там он работал. Единственное отличие заключалось в том, что проводник генерирует ключ, а не использует механизм {UNIQUE_KEY}. Я также попытался поместить изображение в качестве равноправного код, чтобы мне не нужно было использовать относительный путь к каталогу. то есть. нет префикса ./sample_imgs.
Подумав, что ошибка может быть связана с версией библиотеки Python и параметром файла, я вернулся к документации Square, чтобы узнать, как они указывают установку SDK. На этой странице есть ссылка на то, как получить пакет SDK, в котором говорится о посещении PyPi. Обратите внимание, что ссылка на PyPi указывает на использование git. Следовательно, я использовал это в своем файле require.txt
requirements.txt для метода №2
# установка Square API для метода №1 #расквитаться # установка Square API для метода №2 с использованием git clone #square-python-sdk git+https://github.com/square/square-python-sdk.git Однако при использовании версии git возникает та же ошибка. Пожалуйста, сообщите.