Надежное обнаружение Spyder IDE
Как мне надежно определить, выполняется ли скрипт / модуль в IDE Spyder?
У меня возникла проблема с запуском ocrmypdf в IDE Spyder. Он работает в командной строке cmd и anaconda. Он выдает ошибки при запуске в IDE spyder, на Windows 7 и 10, на различных машинах, различных новых / старых настройках Anaconda. (Подробнее об ошибках см. В заглушке и встроенных комментариях ниже.) Разработчик ocrmypdf предположил, что это связано с тем, что многопроцессорность не работает в IDE spyder (многопроцессорность Python не работает в IDE Spyder). Я хочу знать, есть ли надежный метод определения того, запускается ли ocrmypdf или какой-либо скрипт / модуль в IDE Spyder.
По сути, это повторение: Определить, где выполняется код Python (например, в интерпретаторе Spyder, IDLE и cmd)
Я снова задаю этот вопрос, потому что вопрос был первоначально задан в 2013 году, и ответ был принят - проверка переменных среды, которые spyder устанавливает в os.environment - работает, но имеет риск ложных срабатываний.
Если есть более умный способ решить эту проблему, пожалуйста, дайте мне знать!
import os, io
import ocrmypdf
from wand.image import Image as Img
try:
from PIL import Image
except ImportError:
import Image
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
ocrmypdf_exitcodes = {0:'ok', 1:'bad_args', 2:'input file', 3:'missing_dependency',
4:'invalid_output_pdf', 5:'file_access_error', 6:'already_done_ocr',
7:'child_process_error', 8:'encrypted_pdf', 9:'invalid_config',
10:'pdfa_conversion_failed', 15:'other_error', 130:'ctrl_c'}
path = "C:\Users\public\Documents"
tess_lang = "eng"
#Test files from https://github.com/jbarlow83/OCRmyPDF/tree/master/tests/resources
file = "skew.pdf" #works
file = "cardinal.pdf" #breaks at scanning contents section/it's been 20 minutes with no progress past first page
file = "c02-22.pdf" #Breaks at OCR section on first page - logs say 0.5 and then it stalls for 10+ minutes. Sometimes breaks by saying [Errno9] Bad File Descriptor instead.
pdf = os.path.join(path, file)
try:
filename = pdf.rsplit('.', 1)[0]+'_new.pdf'
ocrmypdf.ocr(input_file = pdf, output_file = filename, language = '+'.join(list(set([tess_lang, 'eng']))), rotate_pages=True, deskew=True, force_ocr = False)
except Exception as e:
filename = pdf
print('Error occurred when trying to process file {} error message is: {}'.format(pdf, repr(e) + " " + str(e)))
print(repr(e))
try:
print(ocrmypdf_exitcodes[e.returncode])
except:
pass