无法在其他机器上运行app exe,python2.7,fpdf,pyinstaller

时间:2017-10-24 08:46:43

标签: python-2.7 pyinstaller fpdf

我在其他计算机上从pyinstaller运行exe应用程序时遇到问题。它正在寻找PC上的路径,我建立了应用程序:

console output

我在pyPDF中使用并添加了以下方式的字体:

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')

我试图通过以下方式构建它:

pyinstaller app.py
pyinstaller --onefile app.py

我在构建代码的机器上没有问题。我想从fpdf的输出方法或pyinstaller的设置中有一些东西,我是对的吗?

我必须使用unicode字符创建pdf。我使用最新版本的fpdf和pyinstaller模块。

我会感谢任何帮助。

提前谢谢你,

1 个答案:

答案 0 :(得分:0)

在你的机器上构建它没有问题,因为你有DejaVuSansCondensed.ttf python期望它。但是当你使用PyInstaller进行编译并在另一个系统上运行时,它会查找相同的位置(在其他系统上可能不存在)。

我建议将该ttf文件复制到您当前的工作目录并将行字体行更新为(或类似于您的代码的类似内容):

pwd = "DejaVuSansCondensed.ttf"

您还必须确保.exe可以访问该文件,与系统无关(相对于exe)。因此,您必须将ttf文件复制到与exe相同的目录中,这样当您在另一台计算机上运行它时,您的代码将查找该exe所在的目录并找到ttf文件。