Невозможно выполнить мой скрипт при преобразовании его в exe
Я создал скрипт для извлечения данных из PDF, используя tabula-py и PyPDF2. Когда я запускаю свою программу через Jupyter-notebook и из cmd, она работает отлично. После преобразования его в исполняемый файл с помощью pyinstaller, я получаю эту ошибку:
Error: Unable to access jarfile
E:\Users\paulhong\AppData\Local\Temp\_MEI175522\tabula\tabula-1.0.2-jar-with-dependencies.jar
Error:
Traceback (most recent call last):
File "test.py", line 115, in <module>
File "test.py", line 32, in extractDataDik
tempDf = tabula.read_pdf(file, area = (72, 252, 115.2, 352.8), guess=False, pages='1')
File "site-packages\tabula\wrapper.py", line 108, in read_pdf
File "subprocess.py", line 395, in check_output
File "subprocess.py", line 487, in run
subprocess.CalledProcessError: Command '['java', '-Dfile.encoding=UTF8', '-jar',
'E:\\Users\\paulhong\\AppData\\Local\\Temp\\_MEI175522\\tabula\\tabula-1.0.2-jar-with-dependencies.jar', '--pages', '1', '--area',
'72,252,115.2,352.8', 'E:\\Users\\paulhong\\Desktop\\Purchase Order
2\\SKM_C45819060508450 (003).pdf']' returned non-zero exit status 1. [47140] Failed to execute script test
Я также не смог найти папку _MEI175522 по указанному пути.
Моя версия Python 3.7.1. Версия Java 1.8. Версия Pyinstaller версии 3.4. Последняя версия Tabula-py.
Как я могу исправить эту проблему?
3 ответа
У меня была похожая проблема, и я смог решить ее, используя решение по этой ссылке: Невозможно получить доступ к jarfile 'tabula-1.0.2-jar-with-dependencies.jar'
Я построил свое приложение в виртуальной среде, поэтому я добавил tabula
папка с tabula-1.0.2-jar-with-dependencies.jar
подать в мой site-packages
папка. Выполнение команды pyinstaller --add-data apps\Lib\site-packages\tabula\tabula-1.0.2-jar-with-dependencies.jar;tabula --onefile Table_OCR.py
строит исполняемый файл правильно для меня.
Похоже, что модуль tabula не был скопирован в папку dist вашего исполняемого файла, по моему опыту, это общая проблема с pyinstaller, он часто может пропустить пакеты в каталоге python.
Перейдите в папку dist и проверьте, есть ли папка tabula, если ее нет, вам нужно скопировать ее.
Перейдите в каталог python, он должен быть где-то так:C:\Users\<user_name>\AppData\Local\Programs\Python\Python37-32\Lib\site-packages
Скопируйте все пакеты отсюда, которые должны быть в папке dist
Я нашел этот пост на GitHub полезным.
По сути:
1- Найдите jar-файл таблицы в вашей системе. Путь может выглядеть примерно так:
C:\ProgramData\Miniconda3\Lib\site-packages\tabula\tabula-1.0.5-jar-with-dependencies.jar
2- Используйте опцию --add-file при запуске pyinstaller:
pyinstaller your_file.py --add-data "C:\ProgramData\Miniconda3\Lib\site-packages\tabula\tabula-1.0.5-jar-with-dependencies.jar;tabula"
(Обратите внимание на добавленный к пути. Это;tabula
для Windows,:tabula
для Linux).