问题描述
所以我有这段代码,它有一些功能。这些函数返回一个长字符串,它基本上是由连接构成的。例如:
def myFunc():
file = ""
file = file + "text1\n"
file = file + " newText\n"
[....]
file = file + "exit\n"
return file
现在,如果我通过 CLI 调用它就可以了,例如 python3 myProg.py
。到目前为止,一切都很好。
python3 -m nuitka myProg.py --nofollow-import-to=MysqLdb --nofollow-import-to=time --nofollow-import-to=os --nofollow-import-to=sys --nofollow-import-to=shutil --nofollow-import-to=zipfile --nofollow-import-to=pandas --follow-imports
Nuitka:INFO: Starting Python compilation.
Problem with statement at /home/lucas/myProg/templates/module1.py:1778:
-> out = file
Problem with statement at /home/lucas/myProg/templates/module1.py:629:
-> def myFunc():
Problem with statement at /home/lucas/myProg/templates/module1.py:629:
-> def myFunc():
Nuitka:INFO: Interrupted while working on '<Node 'COMPILED_PYTHON_MODULE' with {'code_flags': '','module_name': <ModuleName templates.module1>,'filename': '/home/lucas/myProg/templates/module1.py'}>'.
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/nuitka/MainControl.py",line 149,in createNodeTree
Optimization.optimize(main_module.getoutputFilename())
File "/usr/local/lib/python3.5/dist-packages/nuitka/optimizations/Optimization.py",line 625,in optimize
makeOptimizationPass()
File "/usr/local/lib/python3.5/dist-packages/nuitka/optimizations/Optimization.py",line 537,in makeOptimizationPass
changed = optimizeModule(current_module)
File "/usr/local/lib/python3.5/dist-packages/nuitka/optimizations/Optimization.py",line 185,in optimizeModule
changed = optimizeCompiledpythonmodule(module)
File "/usr/local/lib/python3.5/dist-packages/nuitka/optimizations/Optimization.py",line 106,in optimizeCompiledpythonmodule
module.computeModule()
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/ModuleNodes.py",line 509,in computeModule
trace_collection=self.trace_collection
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/StatementNodes.py",line 165,in computeStatementsSequence
new_statement = statement.computeStatementsSequence(trace_collection)
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/FrameNodes.py",line 182,in computeStatementsSequence
new_statement = trace_collection.onStatement(statement=statement)
File "/usr/local/lib/python3.5/dist-packages/nuitka/optimizations/TraceCollections.py",line 507,in onStatement
new_statement,change_tags,change_desc = statement.computeStatement(self)
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/AssignNodes.py",line 278,in computeStatement
source = trace_collection.onExpression(self.subnode_source)
File "/usr/local/lib/python3.5/dist-packages/nuitka/optimizations/TraceCollections.py",line 488,in onExpression
r = expression.computeExpressionRaw(trace_collection=self)
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/ExpressionBases.py",line 1060,in computeExpressionRaw
expression = trace_collection.onExpression(sub_expression)
File "/usr/local/lib/python3.5/dist-packages/nuitka/optimizations/TraceCollections.py",in onExpression
r = expression.computeExpressionRaw(trace_collection=self)
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/FunctionNodes.py",line 953,in computeExpressionRaw
function_body.computeFunctionRaw(trace_collection)
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/FunctionNodes.py",line 433,in computeFunctionRaw
self.computeFunction(trace_collection)
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/FunctionNodes.py",line 449,in computeFunction
trace_collection=trace_collection
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/StatementNodes.py",line 167,change_desc = statement.computeStatement(self)
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/TryNodes.py",line 126,in computeStatement
exception_collections = trace_collection.getExceptionRaiseCollections()
File "/usr/lib/python3.5/contextlib.py",line 77,in __exit__
self.gen.throw(type,value,traceback)
File "/usr/local/lib/python3.5/dist-packages/nuitka/optimizations/TraceCollections.py",line 219,in makeAbortStackContext
yield
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/TryNodes.py",line 112,in computeStatement
result = tried.computeStatementsSequence(trace_collection=trace_collection)
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/StatementNodes.py",in onExpression
r = expression.computeExpressionRaw(trace_collection=self)
File "/usr/local/lib/python3.5/dist-packages/nuitka/nodes/VariableRefNodes.py",line 432,in computeExpressionRaw
self.variable_trace.addUsage()
File "/usr/local/lib/python3.5/dist-packages/nuitka/optimizations/ValueTraces.py",line 301,in addUsage
self.prevIoUs.addNameUsage()
File "/usr/local/lib/python3.5/dist-packages/nuitka/optimizations/ValueTraces.py",line 96,in addNameUsage
self.prevIoUs.addNameUsage()
File "/usr/local/lib/python3.5/dist-packages/nuitka/optimizations/ValueTraces.py",line 95,in addNameUsage
if self.name_usage_count <= 2 and self.prevIoUs is not None:
RecursionError: maximum recursion depth exceeded in comparison
我所看到的是:如果我缩短串联,我可以毫无问题地编译,这意味着减少 file = file + " blabla"
的数量。
总共,我在 myFunc()
中有 1140 个串联。
我读到使用 sys.setrecursionlimit()
可能会有所帮助。我有它在 3000;将它设置为 8000,但它也没有编译。到目前为止,唯一的解决方案是缩短串联,这是为了测试它是可以的,但不是为了我的代码的正常运行。
关于如何克服这个问题有什么想法吗?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)