py2exe很棒,只要我想打包一个python程序在Windows系统上运行,我就会使用它。
我的问题是,是否有一个等效的工具可用于在Windows上打包程序,但我可以在Linux上运行?
答案 0 :(得分:7)
这里也是支持Linux,MacOS和Windows的PyInstaller - 我还没有用它(所以)所以我不知道你是否可以在windows上为Linux打包,但是可以浏览{{3似乎有可能。
修改强> manual明确规定你不能从linux创建一个windows包,也不能从linux创建一个mac os包 - 没有什么可以从其他两个来源创建一个linux包,但它可能不起作用。
<强> EDIT2:强> 谷歌搜索后,我发现FAQ也可能值得一看。
答案 1 :(得分:5)
我真的怀疑你可以做那样的事。
你可以做的就是为自己配置3个用于Windows的虚拟机,一个用于MacOS,另一个用于Linux,用于运行程序所需的每个虚拟机。
然后使用py2exe / py2app / pyinstaller的组合为每个平台生成分发。你将有3个不同的pacakges,但每个pacakges将很好地包装,不需要在客户端机器上安装任何其他东西。
答案 2 :(得分:2)
好的,我已经做到了。它有点hacky,但它对我的用例非常有用。
它的要点是使用ModuleFinder查找所有导入的模块,过滤掉任何系统模块,编译它们并压缩它们。
不幸的是,我的代码中充斥着与此问题无关的其他复杂问题,所以我无法粘贴一个工作程序,只是一些片段:
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)