我想出了一个包含模块查找器,编译器和运行良好的zip函数的解决方案。不幸的是,由于它与其他不相关的代码混合在一起,因此我无法在此处粘贴工作程序,但以下是一些摘要:
zipfile = ZipFile(os.path.join(dest_dir, zip_name), 'w', ZIP_DEFLATED)
sys.path.insert(0, '.')
finder = ModuleFinder()
finder.run_script(source_name)
for name, mod in finder.modules.iteritems():
filename = mod.__file__
if filename is None:
continue
if "python" in filename.lower():
continue
subprocess.call('"%s" -OO -m py_compile "%s"' % (python_exe, filename))
zipfile.write(filename, dest_path)