Python脚本“独立”

问题描述 投票:0回答:1

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

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

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

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

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

python python-requests python-standalone
1个回答
0
投票

欢迎来到部署世界!你寻求的答案远非微不足道。

首先,Python是一种解释性语言,实际上并不应该作为桌面应用程序进行分发。如果您想创建可执行文件,那么有一些库,例如py2exe。但是,这些都是ad-hoc解决方案。他们将整个Python“冻结”在你的代码中,然后将所有内容组合在一起。

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

pip freeze > requirements.txt

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

pip install -r requirements.txt 

它将安装所有依赖项。

但是,这只是处理库依赖项。那么python本身的版本,操作系统环境等......所以你可能需要开始研究像Docker这样的解决方案。使用Docker,您可以在Dockerfile中指定完整环境。然后,另一台机器上的任何人都可以运行docker镜像,其中包含所有依赖项。这很快成为运输代码的事实上的方式(在所有语言中,但在Python中特别有用)。

© www.soinside.com 2019 - 2024. All rights reserved.