Ubuntu 20.04 设置 Python 项目环境的正确姿势,


 

今天,我们将学习在 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 版,我最终使用了存储库,而不是通过编译源代码来进行安装。

添加存储库:

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

更新软件包列表:

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

安装软件包:

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

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

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

并添加:

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

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

将新版本设置为默认版本

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

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

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

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

然后执行:

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

输出:

  1. update-alternatives: 使用 /usr/bin/python3.8 来在自动模式中提供 /usr/bin/python (python)  
  2. linuxmi@linuxmi:~/www.linuxmi.com$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 2 

输出:

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

之后,你运行以下命令:

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

然后你会看到如下输出:

  1. 有 2 个候选项可用于替换 python (提供 /usr/bin/python)。  
  2.   选择       路径              优先级  状态  
  3. ------------------------------------------------------------  
  4. * 0            /usr/bin/python3.9   2         自动模式  
  5.   1            /usr/bin/python3.8   1         手动模式  
  6.   2            /usr/bin/python3.9   2         手动模式 

要维持当前值[*]请按<回车键>,或者键入选择的编号:

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

完成后,检查下 Python 版本

  1. 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:

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

进而运行:

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

输出如下:

  1. Defaulting to user installation because normal site-packages is not writeable  
  2. Collecting pip  
  3. Downloading pip-21.2.4-py3-none-any.whl (1.6 MB)  
  4. |████████████████████████████████| 1.6 MB 5.0 kB/s  
  5. Installing collected packages: pip  
  6. Successfully installed pip-21.2.4 

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

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

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

  1. linuxmi@linuxmi:~/www.linuxmi.com$ pip --version 

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

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

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

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

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

总结

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

相关内容