最安全的方法来修改.pyc编译/加载工作流程?

时间:2013-06-14 22:47:22

标签: python python-import pyc

我正在研究MacroPy,项目所做的一件事就是通过PEP302导入钩子挂钩到Python导入系统。但是,我没有做过(也想做)的一件事就是让MacroPy将导入的代码保存到.pyc文件中,就像普通导入一样,并优先使用.pyc文件。 {1}}文件,如果时间戳匹配。

目前,我的代码如下:

.py

这基本上是从py_compile模块复制并粘贴的,并且已修改为使用内存文件而不是磁盘。

我不喜欢这个副本和粘贴,因为它很脆弱:它不适用于def export_transformed(self, code, tree, module_name, file_name): f = open(file_name + suffix , 'wb') f.write('\0\0\0\0') timestamp = long(os.fstat(f.fileno()).st_mtime) wr_long(f, timestamp) marshal.dump(code, f) f.flush() f.seek(0, 0) f.write(imp.get_magic()) def find(self, file, pathname, description, module_name, package_path): try: f = open(file.name + suffix, 'rb') x = imp.load_compiled(module_name, pathname + suffix, f) return x except Exception, e: print e ,并且不适用于python3的sys.dont_write_bytecode。我可以手动修复这些以模拟行为,但我真正想要的是一种手动调用函数的方法:

pycache

并将其挂钩到正常的try_load_pyc(name, timestamp) save_pyc(name, code) 保存/加载工作流程(已经尊重所有与pyc相关的切换,env变量等),而不是自己重新实现所有行为,而不是单调乏味我自己重新实施所有行为。

我用谷歌搜索过,并没有想出太多东西。这些功能是在Python 2.7和Python 3.4中公开的,还是有第三方模块可以为我做这个?

0 个答案:

没有答案