如何确保所需的包总是 installed/available

How to ensure that needed packages are always installed/available

我正在 python 中编写一个依赖于几个不同包和库的脚本。当这个脚本被传输到另一台机器时,它需要的包 运行 有时不存在或者是不具有相同功能的旧版本并导致脚本失败。

我正在考虑使用虚拟环境,但我找不到让脚本使用我设计的特定环境的方法,因为它是默认的,为了使用该环境,用户必须从命令行。

我还尝试检查安装在机器上的软件包的版本,如果版本不够,则按照此处所述从脚本更新它们:

Installing python module within code

是否有任何 easier/surefire 方法来确保所需的软件包无论在何处都始终可用 运行?

通常的方法是创建一个安装脚本并让其管理您的依赖项。然后,当您将项目移动到新环境时,安装程​​序将检查是否存在所有依赖项。 我建议您查看设置工具:https://setuptools.readthedocs.io/en/latest/

如果您不想在需要在新地方使用脚本时安装依赖项,那么您可以将脚本打包到 Docker 容器中。

如果问题是确保所需的包在新环境或虚拟环境中可用,您可以使用 pip 并生成 requirements.txt 并在版本控制中检查它或使用工具为您执行此操作, 比如 pipenv.

如果您希望手动生成 requirements.txt,您应该:

  1. 使用 pip
  2. 安装依赖项
  3. 键入 pip freeze > requirements.txt 以生成 requirements.txt 文件
  4. 在你的源码管理软件中检查requirements.txt

需要设置新环境时,使用pip install -m requirements.txt

我一直在使用的解决方案是在我的脚本文件夹中包含一个自定义库(包含我所有需要的包的文件夹),我只需从那里导入它们:

from Customlib import pkg1, pkg2,...

只要自定义库和脚本放在同一个文件夹中,它就始终可以访问正确的包和这些包的正确版本。

我不确定这个解决方案实际上有多稳健,或者如果它在机器之间传递可能会产生什么错误,但现在这似乎可行。