возможно, очень хакерское исправление - мне не очень нравится этот ответ, но это было быстрое и простое исправление (сделано на OSX с Mojave):
ОБРАТИТЕ ВНИМАНИЕ: изменение исходного кода библиотекВы не понимаете, как правило, плохая идея, так что делайте это на свой страх и риск!Это сработало для меня, ваш milage может отличаться.
Перейдите к вашему файлу (ваш путь к файлу может отличаться, я только что скопировал это из вашей ошибки):
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyscreeze/__init__.py
найдите строку подфункция "_screenshot_osx", которая выглядит как
tmpFilename = '.screenshot%s.png' % (datetime.datetime.now().strftime('%Y-%m%d_%H-%M-%S-%f'))
, скопируйте ее, а затем закомментируйте, вставьте скопированную строку прямо под закомментированный оригинал и измените ее следующим образом:
tmpFilename = r'<your preferred screenshot folder here>/screenshot%s.png' % (datetime.datetime.now().strftime('%Y-%m%d_%H-%M-%S-%f'))
сохраните изменения и посмотрите, работают ли они.
Также обратите внимание: pyautogui.locateOnScreen может быть немного привередливым, поэтому даже если это устранит вашу ошибку, вы все равно не сможете получить нужные координаты (может не вернуть ни одного).Это может быть связано с другой проблемой.Чтобы проверить эту часть, я делаю это:
import pyautogui
pyautogui.screenshot('testFull.png')
placePos = pyautogui.locateOnScreen('testFull.png')
print(placePos)
, хотя даже мигание курсора может все испортить, а у osx есть прозрачные пользовательские интерфейсы, так что довольно неприятно проверять это без тщательной обработки изображения.