如何确保所需的包总是 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,您应该:
- 使用
pip
安装依赖项
- 键入
pip freeze > requirements.txt
以生成 requirements.txt
文件
- 在你的源码管理软件中检查
requirements.txt
需要设置新环境时,使用pip install -m requirements.txt
我一直在使用的解决方案是在我的脚本文件夹中包含一个自定义库(包含我所有需要的包的文件夹),我只需从那里导入它们:
from Customlib import pkg1, pkg2,...
只要自定义库和脚本放在同一个文件夹中,它就始终可以访问正确的包和这些包的正确版本。
我不确定这个解决方案实际上有多稳健,或者如果它在机器之间传递可能会产生什么错误,但现在这似乎可行。
我正在 python 中编写一个依赖于几个不同包和库的脚本。当这个脚本被传输到另一台机器时,它需要的包 运行 有时不存在或者是不具有相同功能的旧版本并导致脚本失败。
我正在考虑使用虚拟环境,但我找不到让脚本使用我设计的特定环境的方法,因为它是默认的,为了使用该环境,用户必须从命令行。
我还尝试检查安装在机器上的软件包的版本,如果版本不够,则按照此处所述从脚本更新它们:
Installing python module within code
是否有任何 easier/surefire 方法来确保所需的软件包无论在何处都始终可用 运行?
通常的方法是创建一个安装脚本并让其管理您的依赖项。然后,当您将项目移动到新环境时,安装程序将检查是否存在所有依赖项。 我建议您查看设置工具:https://setuptools.readthedocs.io/en/latest/
如果您不想在需要在新地方使用脚本时安装依赖项,那么您可以将脚本打包到 Docker 容器中。
如果问题是确保所需的包在新环境或虚拟环境中可用,您可以使用 pip 并生成 requirements.txt 并在版本控制中检查它或使用工具为您执行此操作, 比如 pipenv.
如果您希望手动生成 requirements.txt,您应该:
- 使用
pip
安装依赖项
- 键入
pip freeze > requirements.txt
以生成requirements.txt
文件 - 在你的源码管理软件中检查
requirements.txt
需要设置新环境时,使用pip install -m requirements.txt
我一直在使用的解决方案是在我的脚本文件夹中包含一个自定义库(包含我所有需要的包的文件夹),我只需从那里导入它们:
from Customlib import pkg1, pkg2,...
只要自定义库和脚本放在同一个文件夹中,它就始终可以访问正确的包和这些包的正确版本。
我不确定这个解决方案实际上有多稳健,或者如果它在机器之间传递可能会产生什么错误,但现在这似乎可行。