有很多很多很多的方法可以做到这一点。我将讲解每一个背后的原理,这是用例。
1. python环境
有很多方法可以做到这一点。pipenv
,conda requirments.txt
等)。
使用其中一些,您可以指定python版本。与其他人一起,只需指定一个您知道可以使用的python版本范围即可-例如,如果您使用的是python 3.7,则不太可能不支持3.6;只有一两个小变化。3.8应该也能正常工作。
另一种类似的方法是setup.py
。这些通常用于分发库-例如PyInstaller(我将在下面提到的另一个解决方案),numpy,wxPython或PyQt5等,以供导入/命令行使用。python打包指南非常有用,并且那里有大量的教程。(google python setup.py tutorial
)您也可以在这些文件中指定要求。
2.一个容器
Docker是最重要的。如果您还没有听说,我会感到惊讶。快速摘要的Google提出了this,我将引用其中的一部分:
那么,为什么每个人都喜欢容器和Docker?前Parallels服务器虚拟化CTO和领先的Linux内核开发人员James Bottomley解释说,VM Hypervisor(例如Hyper-V,KVM和Xen)都“基于仿真虚拟硬件。这意味着它们在系统要求。”
但是,容器使用共享的操作系统。这意味着就系统资源而言,它们比虚拟机管理程序效率更高。容器不虚拟化硬件,而是位于单个Linux实例之上。这意味着您可以“将无用的99.9%的VM垃圾扔掉,而剩下一个包含应用程序的整洁的小型胶囊,”
那应该为您总结一下。(请注意,容器不需要特定的操作系统。)
3.可执行文件
在撰写本文时,有2个主要工具可以执行此操作。PyInstaller和cx_Freeze。两者都是积极发展的。两者都是开源的。
您获取脚本,然后该工具将其编译为字节码,找到导入,将其复制,然后创建一个可移植的python环境,该环境可在目标系统上运行脚本,而最终用户不需要python。
就个人而言,我更喜欢PyInstaller-我是开发人员之一。PyInstaller通过命令行脚本提供了所有功能,并支持您可以想到的大多数库,并且可以扩展以支持更多库。cx_Freeze需要安装脚本。
两种工具都支持Windows,Linux,macOS等。PyInstaller可以创建单个文件exe或一个文件夹捆绑,而cx_Freeze仅支持一个文件夹捆绑。PyInstaller 3.6支持python 2.7和3.5-3.7-但4.0 将不支持python2。从上一个主要版本(我认为是6.0)开始,cx_Freeze放弃了对python 2的支持。
无论如何,关于工具的功能已经足够了;您可以自己调查一下。(有关更多信息,请参见https://pyinstaller.org和https://cx-freeze.readthedocs.io)
使用这种分发方法时,通常会在GitHub存储库上提供源代码,提供可供下载的几个exe(每个平台一个),以及有关如何将代码构建为可执行文件的说明。