如何使我的 python 脚本易于移植?或者如何将所有模块依赖项编译成二进制文件?

新手上路,请多包涵

有没有办法将python脚本编译成二进制文件?我有一个文件 python 脚本,它使用了很多模块。我想要的是在其他机器(freebsd)上拥有它的副本,但不需要在每台主机上安装所有需要的模块。

在这种情况下可能的解决方案是什么?

原文由 andriyko 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 714
2 个回答

可以执行您要求的程序是:

  • PyInstaller: http ://www.pyinstaller.org/ [Windows、Linux、OS X]
  • cx_freeze: http ://cx-freeze.sourceforge.net/ [Windows、Linux]
  • py2exe: http ://www.py2exe.org/ [视窗]
  • py2app: http ://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html [os x]

但如前所述,您还可以使用 Distribute 创建一个包,并将其他包作为依赖项。然后您可以使用 pip 安装该包,它会安装所有的包。不过,您仍然需要安装 Python 和 pip。

原文由 Lennart Regebro 发布,翻译遵循 CC BY-SA 2.5 许可协议

cx_freeze 会将您的 python 脚本附加到独立的 Python 加载器,并生成一个包含程序和共享库依赖项的目录。然后,您可以将生成的分发版复制到独立于 Python 或您的模块的其他机器。

 $ cat hello.py
print "Hello, World!"
$ ls dist/
datetime.so  _heapq.so  hello  libpython2.6.so.1.0  readline.so
$ cat hello.py
print "Hello, World!"
$ cxfreeze hello.py
... <snip> ...
$ ls dist/
datetime.so  _heapq.so  hello  libpython2.6.so.1.0  readline.so
$ ./dist/hello
Hello, World!

更好的答案可能是创建一个 PIP 包,将这些第三个模块标识为依赖项,这样安装就可以像“pip install mypackage; ./package”一样简单

原文由 swdunlop 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题