如何确保所需的软件包始终安装/可用

时间:2019-07-11 18:56:10

标签: python package virtual-environment

我正在使用python脚本,该脚本依赖于几个不同的包和库。当此脚本转移到另一台计算机上时,运行所需的软件包有时不存在或者是不具有相同功能并导致脚本失败的较旧版本。

我当时正在考虑使用虚拟环境,但是我找不到让脚本使用我设计的默认环境作为默认方法的方法,并且要使用该环境,用户必须从命令行手动激活它

我还研究了尝试检查机器上安装的软件包的版本,如果不够,请按照以下说明从脚本中更新它们:

Installing python module within code

是否有更简便的方法来确保所需的软件包始终可用,而不管它在哪里运行?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

如果问题是确保所需的软件包可在新环境或虚拟环境中使用,则可以使用pip并生成requirements.txt并在版本控制中进行检查,也可以使用工具{{{ 3}}。

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

  1. 使用pip
  2. 键入pip freeze > requirements.txt来生成requirements.txt文件
  3. 在您的源代码管理软件中检查requirements.txt

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

答案 2 :(得分:0)

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

from Customlib import pkg1, pkg2,...

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

我不确定该解决方案的实用性如何,如果将它从一台机器传递到另一台机器,可能不确定会出现什么错误,但是目前看来,这种方法行之有效。