我设法安装python 3.6
了python 3.10
,问题是当3.6在更新替代方案中选择了 ,则walinuxagent
服务在 时工作正常netbox
,netbox-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 命令在每个虚拟环境中安装任何所需的包。