-1

I compiled a script (running smoothly) that I made in python using Pyinstaller, but the function that converts from word to pdf is stopping the code.

The error:

File "docx2pdf\__init__.py", line 106, in convert
  File "docx2pdf\__init__.py", line 29, in windows
  File "tqdm\asyncio.py", line 24, in __init__
  File "tqdm\std.py", line 1109, in __init__
  File "tqdm\std.py", line 1361, in refresh
  File "tqdm\std.py", line 1509, in display
  File "tqdm\std.py", line 350, in print_status
  File "tqdm\std.py", line 343, in fp_write
  File "tqdm\utils.py", line 89, in __getattr__
AttributeError: 'NoneType' object has no attribute 'write'

I already tried to reinstall the packages and recompile.

I already put all the functions in a file just in case and compile again, but the error didn't change.

  • I did that, I'm using the absolute paths already with /*os.absolutepath()*/. I put together and tested all the functions, and everything works until I reach the final command, which is converting docx to pdf. Only the code /*convert("input.docx")*/, seems to have to do with the **docx2pdf** library. – nilton klebert Dec 15 '22 at 02:28

1 Answers1

2

I ran into this same issue yesterday actually and it took me a bit to figure out.

It turns out docx2pdf uses tqdm to display a progress bar in the console. To do this, it writes to stderr to the console. When I used PyInstaller to create a windowed application without a console, I got this error message as well.

Redirecting stderr for the docx2pdf parts worked for me like the below:

import sys 
import docx2pdf 

sys.stderr = open("consoleoutput.log", "w")

convert('your file here')

I'm sure there are more elegant, thread-safe solutions on here if you look around though. Hope this helps and Good Luck!

yem716
  • 86
  • 1
  • 3