今天,我们将学习在 Ubuntu 20.04 下为你的 Python 项目设置环境的众多方法之一。

原因

我最近参与了一项技术测试,该测试是 Python Jr 开发工作选择过程的一部分。测试附带问题描述、预期解决方案、部署指南和初始框架。在那个框架中出现了一个Pipfile安装了一些库并定义了 Python 版本的框架。这就是问题所在:Ubuntu 20.04 中的 Python 版本是3.8,项目要求使用3.9版本 ,然后我想:好吧,那就让我们安装 Python 3.9!但事情没那么简单……

我遇到了以下问题:

  • 安装新版本不会使其成为系统默认值
  • 此后,pip, pipenv没有按照我想要的Python版本进行适当的配置。

现在,我将向您展示我的详细分步解决方案。

安装新的 Python 版本

为了安装 Python 3.9 版,我最终使用了存储库,而不是通过编译源代码来进行安装。

添加存储库:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo add-apt-repository ppa:deadsnakes/ppa

更新软件包列表:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt update

安装软件包:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install python3.9

可选(实际上,我建议您这样做),你可以将 Python 3.9 添加到系统 PATH:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo nano /etc/profile.d/python.sh

并添加:

PATH=/opt/python/3.9/bin/:$PATH

这将允许用户在终端中运行 pip 命令以在主目录中安装软件包。

将新版本设置为默认版本

检查是否有不同版本的Python的替代方案:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives –list python

如果它不存在,则会出现以下消息:

update-alternatives: 错误: 无 python 的候选项

然后执行:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives –install /usr/bin/python python /usr/bin/python3.8 1

输出:

update-alternatives: 使用 /usr/bin/python3.8 来在自动模式中提供 /usr/bin/python (python)

linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives –install /usr/bin/python python /usr/bin/python3.9 2

输出:

update-alternatives: 使用 /usr/bin/python3.9 来在自动模式中提供 /usr/bin/python (python)

之后,你运行以下命令:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives –config python

然后你会看到如下输出:

在上面的示例中,我最终选择了数字 2,因为它是我希望从现在开始成为默认版本的 Python 版本。

完成后,检查下 Python 版本

linuxmi@linuxmi:~/www.linuxmi.com$ python –version

输出:

Python 3.9.7

此时,我们已经正确安装了所需的 Python 版本,并且是系统的默认版本。

pip 和 pipenv 的问题

即使您将另一个版本的 Python 设置为默认值,安装 pip 和 pipenv 最终也会转到 Python 3.8 PATH。 因此,为了安装指向 Python 3.9 的 pip,我最终正常安装了 pip,然后按如下方式更新了 pip:

linuxmi@linuxmi:~/www.linuxmi.com$ curl https://bootstrap.pypa.io/get-pip.py -o get-piy.py

进而运行:

linuxmi@linuxmi:~/www.linuxmi.com$ python3.9 get-pip.py

输出如下:
Defaulting to user installation because normal site-packages is not writeable
Collecting pip
Downloading pip-21.2.4-py3-none-any.whl (1.6 MB)
|████████████████████████████████| 1.6 MB 5.0 kB/s
Installing collected packages: pip
Successfully installed pip-21.2.4

如果有权限问题,可以使用 sudo 或使用 –user 标志运行命令:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo python3.9 get-pip.py

linuxmi@linuxmi:~/www.linuxmi.com$ python3.9 get-pip.py –user

之后,确保 pip 绑定到 Python 3.9 版:

linuxmi@linuxmi:~/www.linuxmi.com$ pip –version

预期的输出应该是这样的:

pip 21.2.4 from /home/linuxmi/.local/lib/python3.9/site-packages/pip (python 3.9)

正如我之前提到的,我需要安装 Pipfile 依赖项,所以我需要 pipenv。 我这里是运行 pip install pipenv,pipenv 还没有链接到旧版本。 如果发生这种情况,请运行:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo pip install pipenv

并且该软件包将安装在 3.9 版本中。

总结

如果你到此为止并解决了问题,那么恭喜! 功劳不属于我而归于你寻求解决方案! 如果没有,请告诉我们问题是什么,以便我们可以帮助你。感谢阅读,更多资讯及教程请关注Linux迷。

发表评论