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

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

 [[423546]]

今天,我们将学习在 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)。 

 

责任编辑:庞桂玉 来源: Linux公社
相关推荐

2021-09-28 14:15:23

Ubuntu 20.0LinuxSSH

2021-09-18 08:00:00

Python系统开发

2018-01-11 15:31:39

命令Linux关机

2020-02-24 15:26:40

Python短信免费

2023-01-06 08:24:00

PandasPython

2017-02-23 15:37:44

OptionObject容器

2016-05-09 10:41:03

算法分析开发

2017-07-10 13:09:45

前端Flexbox

2017-03-16 11:39:33

Openstack源码姿势

2023-01-30 07:41:43

2020-11-12 11:44:42

ubuntu

2020-03-06 16:50:08

Java错误日志

2020-11-24 10:40:12

Ubuntu 20.0LinuxVue

2021-12-15 11:46:46

HTTP2Nginx

2021-04-20 22:27:22

Python软件包GitHub

2017-08-28 14:28:44

Python文档编程正确姿势

2017-10-12 11:30:34

Spark代码PR

2021-01-08 08:10:34

MySQL表空间回收

2019-12-27 15:58:57

大数据IT互联网

2021-09-15 16:20:02

Spring BootFilterJava
点赞
收藏

51CTO技术栈公众号