当前位置: 代码迷 >> python >> Python脚本“独立”
  详细解决方案

Python脚本“独立”

热度:38   发布时间:2023-07-14 08:43:37.0

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

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

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

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

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

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

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

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

pip freeze > requirements.txt

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

pip install -r requirements.txt 

它将安装所有依赖项。

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

  相关解决方案