python中内部函数错误的错误参数

python中内部函数错误的错误参数,python,reportlab,Python,Reportlab,我有一个python脚本,它使用ReportLab创建报告,该脚本已经过测试,并按预期工作,但有时会收到以下错误消息 TraceBack info: File "C:\tools\LegionellaTool.py", line 605, in <module> createReport(selectedCoolingTowers, Report_outputs_folder, dbo_COLGIS, openPDF) Error Info: ..\Objects\modul

我有一个python脚本,它使用ReportLab创建报告,该脚本已经过测试,并按预期工作,但有时会收到以下错误消息

TraceBack info:

File "C:\tools\LegionellaTool.py", line 605, in <module>

createReport(selectedCoolingTowers, Report_outputs_folder, dbo_COLGIS, openPDF)

Error Info:

..\Objects\moduleobject.c:50: bad argument to internal function
编辑编号2*

这里有完整的追踪

Traceback (most recent call last):
  File "C:\tools\LegionellaTool.py", line 613, in <module>
    createReport(selectedCoolingTowers, Report_outputs_folder, dbo_COLGIS, openPDF)

  File "C:\tools\LegionellaTool.py", line 120, in createReport

    c.drawString(reportlab.lib.units.inch, 10.5 * reportlab.lib.units.inch, title) #creates title

  File "c:\python26\arcgis10.0\lib\site-packages\reportlab\pdfgen\canvas.py", line 1481, in drawString

    t.textLine(text)

  File "c:\python26\arcgis10.0\lib\site-packages\reportlab\pdfgen\textobject.py", line 426, in textLine

    self._code.append('%s T*' % self._formatText(text))
  File "c:\python26\arcgis10.0\lib\site-packages\reportlab\pdfgen\textobject.py", line 393, in _formatText

    for f, t in pdfmetrics.unicode2T1(text,[font]+font.substitutionFonts):
SystemError: ..\Objects\moduleobject.c:50: bad argument to internal function

<type 'exceptions.SystemExit'>: 1
回溯(最近一次呼叫最后一次):
文件“C:\tools\LegionellaTool.py”,第613行,在
createReport(selectedCoolingTowers,Report\u outputs\u文件夹,dbo\u COLGIS,openPDF)
createReport中第120行的文件“C:\tools\LegionellaTool.py”
c、 抽绳(reportlab.lib.units.inch,10.5*reportlab.lib.units.inch,标题)#创建标题
文件“c:\python26\arcgis10.0\lib\site packages\reportlab\pdfgen\canvas.py”,第1481行,以抽绳形式
t、 文本行(文本)
文件“c:\python26\arcgis10.0\lib\site packages\reportlab\pdfgen\textobject.py”,第426行,文本行
self.\u code.append('%s T*'%self.\u formatText(text))
文件“c:\python26\arcgis10.0\lib\site packages\reportlab\pdfgen\textobject.py”,第393行,格式为
对于pdfmetrics.unicode2T1中的f,t(文本,[font]+font.substitutionfont):
SystemError:..\Objects\moduleobject.c:50:内部函数的参数错误
: 1

感谢

根据我的经验,ReportLab的间歇性错误通常是由于在试图呈现文本时出现的问题造成的,这些文本中可能包含一些“奇怪”的内容,例如字符集的意外字符或空字符。查看您的代码时,我没有注意到任何明显会导致问题的原因,但您可能希望调查某个内容包含意外值的可能性

特别是,我要看一看处理
selContact
的代码,看看它的任何属性是否意外地为null,或者只是不是可能导致错误的字符串

没有完整的堆栈跟踪,很难说得更具体

ETA


根据现在提供的堆栈跟踪,问题可能是您试图绘制的
title
变量中有什么内容,或者是用于绘制字符串的字体。查看您的代码,我没有发现任何问题,但是,没有任何迹象表明抛出错误的代码部分存在间歇性问题。

在过去几周里,这条消息让我发疯,我终于找到了导致此错误的两个原因以及如何修复它们:

  • 正如G Gordon Worley III所建议的,如果您试图用不正确的元素构建报告,它可能会出现

    修复:查找损坏的元素或在ArcGIS外部调试程序,您将获得更明确的错误消息

  • 如果您的Python安装有点混乱,它可能会出现。对我来说,我将ReportLab文件包括在与脚本相同的文件夹中,以便于分发。但我以前也在Python安装文件夹中安装了ReportLab。不知怎么的,这让阿尔吉斯感到困惑

    修复:删除Python???/(ArcGIS???/)Lib/site packages/reportlab文件夹,以便您的脚本只有一个库选项


我希望这会对某人有所帮助。

您能提供完整的堆栈跟踪吗?还有一些我们可以看一下的代码?@Paco,代码是在一个叫做ArcGIS的外部程序中运行的,它调用脚本,所以我无法得到完整的堆栈跟踪。我已经用创建报告代码更新了原始问题-有点长…@Paco,原始问题添加了完整跟踪我根本不知道reportlab,但您应该尝试使用pdb调试它。在失败的行之前添加此项:
import pdb;pdb.set_trace()
然后,继续键入
s
,直到到达堆栈跟踪的最后一行。最后打印所有变量的值以查看是否有问题。如果发现问题,可以按
u
返回到一个级别,此时可以再次检查变量。继续这样做,直到你到达托菲岛,这个问题已经解决了吗?在从ArcMap调用的脚本中使用ReportLab生成pdf时,我遇到了相同的错误。我在原始问题中添加了完整的跟踪。
Traceback (most recent call last):
  File "C:\tools\LegionellaTool.py", line 613, in <module>
    createReport(selectedCoolingTowers, Report_outputs_folder, dbo_COLGIS, openPDF)

  File "C:\tools\LegionellaTool.py", line 120, in createReport

    c.drawString(reportlab.lib.units.inch, 10.5 * reportlab.lib.units.inch, title) #creates title

  File "c:\python26\arcgis10.0\lib\site-packages\reportlab\pdfgen\canvas.py", line 1481, in drawString

    t.textLine(text)

  File "c:\python26\arcgis10.0\lib\site-packages\reportlab\pdfgen\textobject.py", line 426, in textLine

    self._code.append('%s T*' % self._formatText(text))
  File "c:\python26\arcgis10.0\lib\site-packages\reportlab\pdfgen\textobject.py", line 393, in _formatText

    for f, t in pdfmetrics.unicode2T1(text,[font]+font.substitutionFonts):
SystemError: ..\Objects\moduleobject.c:50: bad argument to internal function

<type 'exceptions.SystemExit'>: 1