[求助] cx_freeze 打包无法用__import__()动态加载模块的问题

2018-12-04 11:33:09 +08:00
 Alerta

这次打包的项目相对于以前打包的项目复杂好多,入口文件 run.py 在项目的第二级目录里面“ test/project/run.py

还没有打包之前,在 run.py 中有一段代码如下

                if len(test_suite) == 0:
                    print "111-"
                    test_mod = __import__(case_mod)
                    print "111test_mode:", test_mod
                    self.__add_suite(test_mod, tc_info, device)

运行结果如下:

111-
111test_mode: <module 'advip_case' from 'E:\idd_project\testcases\advip_case.pyc'>

但是用 cx_freeze 打包出来的 run.exe 跑出来却没能打印出来"111test_mode"的信息,并且脚本就结束运行了。 检查了一下

1.需要加载的 advip_case.pyc 正确在当前目录中

2.当前目录已加上__init__.pyc (不过使用__import__方法好像不需要__init__文件)

求助各位大神,这是怎么回事?

1375 次点击
所在节点    Python
3 条回复
cs371332219
2018-12-04 11:38:05 +08:00
使用 PyInstaller 的时候遇到过同样的问题,打包的时候加参数手动把你 __import__ 的包补进来就行,更好的办法就不知道了。
Alerta
2018-12-04 11:50:52 +08:00
@cs371332219 我已经手动把那个包加进来了,但不知道为什么就没有 import 成功,也没有任何错误信息
cs371332219
2018-12-04 11:53:18 +08:00
@Alerta cx-freeze 我当时没跑起来就换 PyInstaller 了,抱歉。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514145

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX