我将 Ubuntu 从 22.04 更新到了 24.04 以前使用的是 python 3.10 现在默认版本是 python3.12
- Python 3.12 似乎需要使用虚拟环境,我已经浏览了一些文档和论坛,但正在考虑是否最好回到 python3.10
- 您会推荐 update-alternative 让我可以同时拥有这两个版本吗?
[sudo] password for meena:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package python3.10 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'python3.10' has no installation candidate
不,回到 Python 3.10 并不是更好。
或者更准确地说,将系统安装的 Python改回 3.10 并不是一个好主意。您的系统构建时就期望 Python 3.12 可用,如果您删除它,各种功能都会停止工作。
你可以并且应该对你的 Python 使用方式做出两项改变:
现在,虚拟环境是所有Python 版本的推荐做法,因此你应该开始使用它们。你可使用多种工具来创建和管理虚拟环境;例如,我特别推荐使用pipx来安装 Python 应用程序,即任何你打算运行但不在自己的代码中使用的东西。另一方面,如果你要编写自己的 Python 代码,可以考虑使用hatch(我的最爱)、pdm、flit或poetry(它不如其他工具那么精致;它稍微早于 Python 开发中的一些现代标准)。你也可以考虑使用pipenv,它是一种更简单的工具,仅创建虚拟环境并管理其中安装的软件包列表,而不具备其他工具所具有的开发项目功能。
您还可以使用
venv
Python 标准库 ( ) 中内置的模块python -m venv <path>
或virtualenv(同一款工具的稍微复杂一些的版本)手动创建虚拟环境。这些工具都有自己独特的工作流程,因此您可以尝试一下,看看自己喜欢哪种。如果您需要访问除 3.12 之外的其他版本的 Python,我建议您“手动”安装它们,而不是使用
apt
。也许最简单的方法是使用pyenv之类的东西,它为您提供了一个相当简单的工具,可以安装、升级和卸载许多不同版本的 Python,而无需触及系统使用的版本。安装所需的版本后,您可以使用它来创建虚拟环境,或者您可以让您选择的工具使用它来创建虚拟环境。还有其他工具,如rye和uv(目前正在合并……有点像?),它们试图完成上述所有任务 - 它们可以让您创建和管理虚拟环境,还可以让您安装和管理 Python 版本。如果这些工具有用,请随意尝试一下。
不要更改默认的 Python 版本。那会毁了 Ubuntu。
相反,使用 Miniforge 的虚拟环境。
下载适用于 Linux 的 64 位安装程序,如下所述。
现在安装它。
现在使用 python3.10 创建一个虚拟环境
使用以下命令激活此环境
现在运行
python3
,应该就可以了python3.10
。我发现 pyenv 比 anaconda 等其他工具更易于使用。
您可以在此处找到安装说明:https://github.com/pyenv/pyenv#automatic-installer
安装后,使用起来非常简单,只需运行
安装给定的 Python 版本。
如果你想全局使用 python 版本,你可以使用以下命令进行设置
如果你只想在项目上设置它,你可以这样做:
这将创建一个
.python-version
包含版本的文件,当您在该目录中运行 python 时,pyenv 将自动运行该版本。当您处理需要不同 python 版本的各种项目时,这很有用,这种情况在专业环境或某些 OSS 项目中经常发生。请记住,这会为每个 Python 版本提供一个虚拟环境,并且您在系统 Python 上安装的包即使当时是同一版本,也将无法访问。
以下是使用 Python 及其软件包的方法(按照我的偏好顺序):
1. 使用系统 Python 和系统包
在 Ubuntu 24.04 上,这意味着 Python 3.12。您可以通过 apt(例如
apt install python3-numpy
或apt install python3-django
)安装所需的软件包。2. 使用系统 Python 和虚拟环境
再次说明,对于您来说,这意味着 Python 3.12。设置 Venv 并在那里安装包(例如
virtualenv venv; source venv/bin/activate; pip install whatever
)。3. 使用 pyenv 或者类似 anaconda 的工具
与以前的解决方案不同,这允许您获取不同的 Python 版本。如果可以,请尽量避免这种情况。如果软件在 Python 3.10 上运行良好,但在 Python 3.12 上出现故障,则更好的方法是修复软件。
切勿在 venv(或 pyenv 或 anaconda,或......)之外以用户身份使用 pip
这会将软件“全局”地安装在您的用户帐户下。这会变得难以管理,并且您无法在项目之间进行隔离。
切勿在 venv 之外以 root 身份使用 pip (或...)
与上述问题相同,但更严重。可能会破坏您的系统。
只是因为我没有看到任何人提到docker:
如果你没有安装docker:
这将执行您在标签中指定的版本的 Python。您可以传入任何版本,只要它能工作。设置起来比安装不同版本要快得多,并且与操作系统的其余部分有更好的隔离。如果您需要在 Docker 容器内运行文件,请使用选项
-v
将您的文件系统挂载到容器的文件系统。当然,此解决方案的实用性在很大程度上取决于您的用例。如果您想了解有关 docker 的更多信息,请参阅其文档:https ://docs.docker.com/