怎么打包基于OpenStack-TaskFlow的Python程序?总是提示缺少各种包。

shengwubin
  • 227

最近我开发了一个python程序,用到了OpenStack中的TaskFlow,然后我想把它打包成一个exe,遇到了问题。
现在一个最简单的example也不能打包,代码如下:

from taskflow import engines
from taskflow.patterns import linear_flow
from taskflow import task


class TaskA(task.Task):
    default_provides = 'a'

    def execute(self):
        print("Executing '%s'" % (self.name))
        return 'a'


class TaskB(task.Task):
    def execute(self, a):
        print("Executing '%s'" % (self.name))
        print("Got input '%s'" % (a))


print("Constructing...")
wf = linear_flow.Flow("pass-from-to")
wf.add(TaskA('a'), TaskB('b'))

print("Loading...")
e = engines.load(wf)

print("Compiling...")
e.compile()

print("Preparing...")
e.prepare()

print("Running...")
e.run()

print("Done...")

使用Pyinstaller打包后,运行是这样的,总是缺少什么东西,然后我把那些包手动包含在打包文件中,再运行会提示taskflow找不到引擎,这是因为原代码中e = engines.load(wf)这个实际上还有个默认参数,e = engines.load(wf,engine='default'),它是在运行时寻找引擎,因此也不知道如何打包才能正常运行。
n0r0q.jpg

回复
阅读 2.6k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏