我有个问题。
我不知道怎么做,但是我已经安装了 2 个版本的 python。
- Python 2.7
- Python 3.7
现在我的所有软件包都安装在 python 2.7(我正在使用的版本)中,但我想将所有内容升级到 python 3.7。最好的方法是什么?有人可以告诉我该怎么做吗?
答案1
在 Ubuntu 18.04 及更新版本中,默认安装 Python3,未安装 Python2。
该命令python
仅指 Python2。请使用python3
Py3 的命令。避免混淆。
使用 pip 时也是一样的:pip
使用 Python 2,pip3
使用 Python 3。
确保您已安装两个版本的 Pip。
sudo apt install python-pip // Python 2 example
sudo apt install python3-pip // See the difference?
列出已安装的 Python 2 (pip) 软件包
pip freeze
安装 Python 3 版本
pip3 install package another_package yet_another_package
卸载 Python 2 版本
pip uninstall package another_package yet_another_package
使用 Pip 不会影响 debs 或其他类型的软件包。如果你安装了 Python 2 deb 软件包,那么你仍然安装它们。
答案2
如果你正在谈论安装的软件包pip
,你不能升级它们,但是您必须使用pip
与 Python 3 版本相对应的版本再次安装它们。
一般来说,您不应该将包安装到全局 Python 安装中,因为可能会出现依赖冲突。
您可以手动创建一个虚拟环境并在其中安装软件包,或者您可以使用类似的工具pipx
,它会为每个已安装的软件包自动创建一个虚拟环境。
答案3
这不是一个真正的解决方案,但您可以同时使用两者。
在终端中运行python3
而不是python
您可以在下载的最新版本中运行 python 3。对于软件包来说也是如此。通过运行pip3
而不是pip
您正在安装适用于 python 3 的软件包来安装软件包。当然,对于空闲和运行 python 脚本时也是如此
答案4
Ubuntu 18.04 及更高版本
将当前安装的所有 Python 2.7 包升级到 Python 3.7。
1a. 安装 Synaptic 包管理器。
sudo apt install synaptic
1b. 打开 Synaptic,选择已安装在左侧窗格中,在搜索框中输入 python。
1c. 将通过 apt 安装的 Python 2 软件包升级到 Python 3。您可以在 Synaptic 界面中执行此操作。
1d.卸载所有通过 pip 安装的 Python 包。
pip freeze | xargs pip uninstall -y
如果您不使用 sudo 或以 root 身份运行此命令,则不会卸载您可能需要的 pip 全局安装的任何软件包,但可能会留下一些由 root 全局安装
sudo pip
或pip
以 root 身份运行的 Python 2 软件包。我建议您暂时保留这些由 root 全局安装sudo pip
或pip
以 root 身份运行的软件包,至少在您了解该pip freeze
命令有多疯狂之前。卸载 Python 2.7。
sudo apt remove python2.7-minimal python2.7
安装 deborphan
sudo apt install deborphan
运行 deborphan
deborphan
卸载所有孤立的 Python 2 包。如果 Synaptic 捕获了所有孤立的 Python 2 包,那么可能就不需要卸载它们了。
请注意,我尽可能使用 apt 代替 pip,因为我认为 pip 是一个蹩脚的借口,可以安装大量二流 Python 包,而从默认 Ubuntu 存储库安装的同样一流的 Python 包则不然。不要上当使用 pip 将每个已安装的 Python 包升级到 Python 3.7 的最新版本。如果您养成从默认 Ubuntu 存储库安装 Python 包的习惯,而不是使用 pip,您将避免陷入无望的复杂性。将 pip 与 sudo 一起使用是一个陷阱,您可以在 Python 虚拟环境中安装任何您想要的 Python 包,而无需 sudo。