2017-10-24 3 views
0

Ich habe ein Problem mit der Ausführung von EXE-Anwendung von Pyinstaller auf anderen Maschinen. Es sucht Pfad auf dem PC, wo ich Anwendung gebaut:Kann App EXE auf anderen Maschinen nicht ausführen, Python2.7, Fpdf, Pyinstaller

console output

Ich benutze und hinzugefügt Schrift in pyPDF in Art und Weise folgt vor:

from fpdf import FPDF 

pwd = os.path.realpath(os.path.dirname(sys.argv[0])) + "\\font\\DejaVuSansCondensed.ttf" 

pdf = FPDF(orientation = 'L', unit = 'mm', format='A4') 
pdf.add_page() 
# Add a DejaVu Unicode font (uses UTF-8) 
# Supports more than 200 languages. For a coverage status see: 
# http://dejavu.svn.sourceforge.net/viewvc/dejavu/trunk/dejavu-fonts/langcover.txt 
pdf.add_font('DejaVu', '', pwd, uni=True) 
pdf.set_font('DejaVu', '', 18) 
#then I use pdf.write() to write data 
#save and close pdf file 
pdf.output('C:\\Users\\' + getpass.getuser() + '\\Documents\\pdf_file' + time_stamp + '.pdf', 'F') 

Ich versuchte es in folgenden Weise zu bauen:

Es gibt kein Problem auf der Maschine, wo ich Code erstellen. Ich nehme an, es gibt etwas in der Ausgabemethode von fpdf oder Einstellungen von pyinstaller, habe ich recht?

Ich muss PDF mit Unicode-Zeichen erstellen. Ich benutze die neuesten Versionen von fpdf und pyinstaller Modulen.

Ich werde für jede Hilfe dankbar sein.

Vielen Dank im Voraus,

Antwort

0

Es gibt keine Frage, wenn Sie es auf Ihrem Rechner bauen, da Sie DejaVuSansCondensed.ttf haben, wo Python es sein erwartet. Wenn Sie jedoch mit PyInstaller kompilieren und es auf einem anderen System ausführen, sucht es an derselben Stelle (die auf anderen Systemen möglicherweise nicht vorhanden ist).

Was würde ich vorschlagen, dass ttf-Datei auf Ihrem aktuellen Arbeitsverzeichnis kopieren und die Zeile Schriftzeile (oder so ähnlich, dass Ihr Code passt) aktualisieren:

pwd = "DejaVuSansCondensed.ttf" 

Sie müssen auch sicherstellen, dass Die .exe hat Zugriff auf diese Datei, unabhängig vom System (relativ zur exe). Sie müssen also die ttf-Datei in dasselbe Verzeichnis wie Ihre exe kopieren, so dass Ihr Code bei der Ausführung auf einem anderen Computer in dem Verzeichnis, in dem sich die exe befindet, suchen und die ttf-Datei finden wird.

+0

Lösung funktioniert. Vielen Dank. – Marcin

Verwandte Themen