Python脚本“独立”

时间:2018-09-16 11:47:42

标签: python python-requests python-standalone

我最近开始编写python脚本,但我仍然是该语言的新手。

我遇到了一个问题:我的脚本要求pip安装“请求”库(以及使用pip时随附的其他软件包),脚本才能工作(以及一些文件夹(如“数据库”) ”(我在其中存储sqlite3文件的位置),并且需要在很多计算机上安装脚本,这些计算机具有不同的Ubuntu版本,因此具有不同的Python版本,并且我希望我的脚本可以“独立”运行,而不必安装/每次我在新计算机上设置脚本时,都要更新Python,pip和“请求”包。我正在我的计算机上的virtualenv中进行开发,该计算机目前已安装了运行脚本所需的所有必需软件包。

我可以为我的virtualenv制作一个“副本”,以便可以将它与我的Python脚本一起移动到其他计算机,包括我的数据库文件夹,而不必在每台计算机上安装/更新python和pip,而是使用此独立版本版本的python?所有的机器都是Linux。

我已经尝试将我的virtualenv复制到我的项目文件夹,但是当我尝试使用shebang行中的python解释器运行脚本时,即使使用--relocatable参数时,virtualenv也崩溃了,所以我猜它是并非如此。

我也尝试过使用PyInstaller,但没有成功。

1 个答案:

答案 0 :(得分:0)

欢迎来到部署世界!您寻求的答案绝非易事。

首先,Python是一种解释型语言,实际上不应该作为桌面应用程序分发。如果您想创建可执行文件,那么可以使用一些库,例如py2exe。但是,这些充其量只是临时解决方案。他们将代码和整个Python“冻结”,然后将所有内容一起运送。

规定依赖项的最佳实践方法是在requirements.txt文件中。您可以使用以下命令创建一个:

pip freeze > requirements.txt

这是要检查您正在使用的任何环境中当前存在的所有库,并将它们保存到名为requirements.txt的文件中。然后,该文件将包含您所有需要的库,接收您代码的任何人都可以运行

pip install -r requirements.txt 

,它将安装所有依赖项。

但是,这只需要处理库依赖项。 python本身的版本,OS环境等如何?因此,您可能需要在这里开始研究Docker之类的解决方案。使用Docker,您可以在Dockerfile中指定完整环境。然后,另一台机器上的任何人都可以运行docker映像,其中包括所有依赖项。这很快成为事实上的代码交付方式(在所有语言中,但在Python中特别有用)。