避免在同一个环境中为每个服务切换两个版本的python

避免在同一个环境中为每个服务切换两个版本的python

我设法安装python 3.6python 3.10,问题是当3.6在更新替代方案中选择了 ,则walinuxagent服务在 时工作正常netboxnetbox-rq而 则nginx服务不工作;相反的情况发生在3.10已选定。

一种解决方法是根据要启动的服务选择每个 Python 版本。有没有办法避免每次都这样做?

答案1

最好的方法是不要改变系统的默认 Python,因为系统和程序的某些部分可能依赖于此特定版本,并且可能无法与其他/较新的 Python 版本一起正常工作。

并行安装另一个 Python 版本没有问题,但是应该始终使用明确的版本号来引用此 Python 版本。

对于 Ubuntu 18.04,Python 3.6 是系统默认的,在python3调用时运行。并行安装的 Python 3.10 应使用 调用python3.10

答案2

避免每次都在 Python 版本之间切换的一种解决方案是为每个服务创建虚拟环境,并在每个虚拟环境中指定所需的 Python 版本。虚拟环境是一个独立的 Python 环境,允许您安装包并运行脚本,而不受其他 Python 安装的影响。

要创建虚拟环境,可以使用 virtualenv 包。以下是为每个服务创建虚拟环境的方法:

使用以下命令安装 virtualenv:

pip install virtualenv

为每个服务创建一个虚拟环境,并指定所需的 Python 版本:

virtualenv -p /usr/bin/python3.6 walinuxagent-env
virtualenv -p /usr/bin/python3.10 netbox-env
virtualenv -p /usr/bin/python3.10 netbox-rq-env
virtualenv -p /usr/bin/python3.10 nginx-env

在启动相应的服务之前激活每个虚拟环境:

source walinuxagent-env/bin/activate
source netbox-env/bin/activate
source netbox-rq-env/bin/activate
source nginx-env/bin/activate

现在,每个服务都将使用相应虚拟环境中指定的所需 Python 版本运行,而无需每次在 Python 版本之间切换。要停用虚拟环境并返回全局 Python 环境,可以使用 deactivate 命令。

注意:您需要使用 pip install 命令在每个虚拟环境中安装任何所需的包。

相关内容