Python py2exe的跨平台替代方案
py2exe很棒,每当我想打包一个python程序在Windows系统上运行时,我都会使用它 我的问题是,有没有一个等效的工具可以用来在Windows上打包程序,但我可以在Linux上运行?这里还有一个支持Linux、MacOS和Windows的工具-我还没有使用过它(现在),所以我不知道你是否可以在Windows上打包Linux版的东西,但是浏览一下它似乎是可能的 编辑: 声明明确指出,您不能从linux创建windows软件包,也不能从linux创建mac os软件包——从其他两个源创建linux软件包没有任何意义,但它可能不起作用 EDIT2:Python py2exe的跨平台替代方案,python,py2exe,Python,Py2exe,py2exe很棒,每当我想打包一个python程序在Windows系统上运行时,我都会使用它 我的问题是,有没有一个等效的工具可以用来在Windows上打包程序,但我可以在Linux上运行?这里还有一个支持Linux、MacOS和Windows的工具-我还没有使用过它(现在),所以我不知道你是否可以在Windows上打包Linux版的东西,但是浏览一下它似乎是可能的 编辑: 声明明确指出,您不能从linux创建windows软件包,也不能从linux创建mac os软件包——从其他两个源创建li
在谷歌上搜索了一下后,我发现这可能也值得一看。我真的怀疑你是否能做这样的事情 你所能做的就是为自己配置3个构建虚拟机,一个用于Windows,一个用于MacOS,一个用于Linux,它们拥有运行程序所需的一切
然后使用py2exe/py2app/pyinstaller的组合为每个平台生成一个发行版。您将有3个不同的包,但每个包都将很好地打包,无需在客户端计算机上安装任何其他东西。好的,我已经完成了。它有点粗糙,但对于我的用例来说效果很好 它的要点是使用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)
您可以放心地假设python已经安装在大多数linux系统上。是的,但我仍然希望轻松地打包所有相关的源文件,包括任何导入的模块,而无需在目标linux系统上安装任何东西。这是一个有趣的想法,但我还没有成功地使这两个都起作用。谢谢你的建议。