Почему код выдает ошибку "Please check if you have Photoshop installed correctly." при условии, что сам код фотошоп видит?
Суть такая, есть небольшой код, который через бота в телеграм берет инфу от пользователя(например некий текст) и вставляет в psd файл на нужном слое. Реализовано это через pyTelegramBotAPI и pythonPhotoshopAPI, но при запуске функции, где информация от пользователя посылается в функцию с фотошопом, код выдает ошибку - Please check if you have Photoshop installed correctly. Но если запустить эту же функцию не через бота, то никакой ошибки не будет и все сработает как и должно работать. В чем может быть проблема?
Что я уже пробовал - Переустановить фотошоп. Переустановить фотошоп на более новую версию. Установить path в переменные среды win. Использовать библиотеку pyWin32, чтобы открыть фотошоп очень не выгодно для меня.
вот сам вызов функции с фотошопом
@bot.message_handler(content_types=['text'])
def func(message):
if(message.text == '/ph'):
user_info = {'test' : 'asdsaasd'}
test_edit_text(user_info)
вот сама функция
def test_edit_text(info_from):
try:
psApp = ps.Application() #открываем фш
psApp.Open(r"mypath\first.psd") #открываем файл
doc = psApp.Application.ActiveDocument
print(info_from['test']) #сами данные
#меняем в фш
text_from= info_from['test']
layer1= doc.ArtLayers["layer1"]
new_text_onlayer= layer1.TextItem
new_text_onlayer.contents = f"{text_from.upper()}"
#экспорт
options = ps.JPEGSaveOptions(quality=5)
jpg = r'mypath\photo.jpg'
doc.saveAs(jpg, options, True)
except Exception as e:
print(e)
Если запустить эту функцию просто ниже, не через бота, а вот так
user_info = {'test' : 'asdsaasd'}
test_edit_text(user_info)
то все сработает.
Не знаю поможет ли это как то, но я нашел где эта ошибка внутри самой библиотеки и вот что там есть.
Ответы (1 шт):
Я использовал вариант, который открывает фотошоп через import os перед кодом, в этом случае все работает исправно.
os.startfile(r"mypath\Photoshop.exe")
psApp = ps.Application()
psApp.Open(r"mypath\first.psd")
doc = psApp.Application.ActiveDocument