以下所有步骤,亲测,并简单对比不同方案的优缺点,以便在不同情况下有选择的余地。主要包括切换Python版本及环境,及VScode/pdb调试方法。

安装Python并切换

参考:

  1. 【初学linux】如何在ubuntu 18.04中安装并升级python版本。(爬坑日记) 时间2021/11/10-Engineer-Stephen_Lin-CSDN博客
  2. Relative imports in Python 3-StackFlow
  3. 安装python-ldap fatal error: lber.h: No such file or directory
  4. 在Ubuntu18.04 LTS下升级Python版本

1 安装某个版本

方式一:pyenv安装(强烈推荐)

安装方法:

  1. 下载依赖:
sudo apt install -y libffi-dev liblzma-dev make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
  1. 克隆pyenv:
git clone git://github.com/yyuu/pyenv.git ~/.pyenv
  1. 修改~/.bashrc,追加如下内容,保存后重启终端:
export PYENV_ROOT="${HOME}/.pyenv"

if [ -d "${PYENV_ROOT}" ]; then
export PATH="${PYENV_ROOT}/bin:${PATH}"
eval "$(pyenv init -)"
fi

使用方式:

  1. 查看pyenv支持安装的版本:
pyenv install --list
  1. 安装python3.9.12:
pyenv install 3.9.12
  1. 查看已安装的python版本:
pyenv versions

方式二:apt安装(不推荐)

安装前,最好不要换源。

Python3

Python3以3.7为例:

Ubuntu18上最好就用3.6,Ubuntu20上3.8,Ubuntu22上3.10,这是系统发布版自带的。

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.7 -y
sudo apt install python3.7-distutils -y

如果不安装distutils,将出现错误ImportError: cannot import name 'sysconfig' from 'distutils' (/usr/lib/python3.9/distutils/__init__.py)

注意,如果你使用的不是bionic源,是Ubuntu18,那你可能无法定位python3.6软件包。因为ppa:deadsnakes/ppa源说发布版已经提供了这个python,所以它就不提供了:

此时,你还需要运行如下指令:

  1. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
  2. echo "deb http://archive.ubuntu.com/ubuntu/ bionic main restricted" >> /etc/apt/sources.list
  3. sudo apt update

如果由于提前删除了原来的python3,导致安装software-properties-common时出现如下错误:

The following packages have unmet dependencies:
python3 : Depends: libpython3-stdlib (= 3.8.2-0ubuntu2) but 3.10.6-1~22.04 is to be installed
python3-software-properties : Depends: python3-gi but it is not installable
software-properties-common : Depends: packagekit but it is not installable
Depends: python3-gi but it is not installable
E: Unable to correct problems, you have held broken packages.

则运行sudo apt-get autoremove,即可解决这个问题。
但还会出现新的问题,所以安装新的之前不要随便删掉原来的Python3!!!

Python2

Python2以python2.7为例:

sudo apt install python2
sudo apt-get install -y libsasl2-dev libldap2-dev libssl-dev

如果不安装libsasl2-dev libldap2-dev libssl-dev,将出现错误python-ldap fatal error: lber.h: No such file or directory

查看所有apt装上的版本
ls /usr/bin | grep python

2 切换python版本

方式一:pyenv(强烈推荐)

使用方式:

  1. 查看已安装的python版本:
pyenv versions
  1. 本地切换版本(推荐):
pyenv local 3.9.12
  1. 全局切换版本(不推荐):
pyenv global 3.9.12

方式二:改链接(不推荐)

更换默认python3的版本为3.6

sudo ln -s /usr/bin/python3.6 /usr/local/bin/python3

注意,不要改/usr/bin/python3,因为这个和系统设置有关,容易出错。
注意:删除软链接后,一般重启终端才会生效。

方式三:update-alternatives(不推荐)

添加python版本切换的候选项(数字越大优先级就越大,也可以将python3.x作为python的候选项):

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 3

添加python3版本切换的候选项:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1

删除python3版本候选项python3.6:

sudo update-alternatives --remove python3 /usr/bin/python3.6

切换python/python3版本:

sudo update-alternatives --config python
sudo update-alternatives --config python3

如下图:


输入编号即可选择。

切换后要重新安装一下pip,否则pip可能会异常。

python3 -m pip install --upgrade pip

注:切换后可能导致系统某些行为异常,再换回来就是了。

创建Python虚拟环境

个人认为:日常学习可以方案一,开发项目可以方案二,机器学习直接方案三,有少许对环境的强迫症直接方案四。

方案一:virtualenv+virtualenvwrapper(推荐)

参考:

  1. Ubuntu18.04安装Python虚拟环境-JacobHou-博客园
  2. Ubuntu18安装python虚拟环境|lsvirtualenv的使用-wangju008-博客园
  3. virtualenv 1.7.1.2.post1 documentation

本方案优点:便于多个python环境相互切换,使用简单;适用于Python2和Python3。

安装virtualenv和virtualenvwrapper:

pip3 install virtualenv
pip3 install virtualenvwrapper
# pip install virtualenv
# pip install virtualenvwrapper

修改~/.bashrc文件,在文件末尾添加:

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source $HOME/.local/bin/virtualenvwrapper.sh # 改成自己的目录

启用配置文件:

source ~/.bashrc

创建虚拟环境(其中virtual_name是虚拟环境名称,-p代表指明python环境):

mkvirtualenv -p /usr/bin/python3 <virtual_name>

其他指令:

lsvirtualenv #查看虚拟环境
workon <virtual_name> #切换到某个虚拟环境
deactivate #退出某个虚拟环境
rmvirtualenv <virtual_name> #删除某个虚拟环境
cdvirtualenv #进入到虚拟环境所在的目录

方案二:venv(优缺点明显)

参考:

  1. venv - 廖雪峰的官方网站
  2. 12. 虚拟环境和包 — Python 3.10.8 文档

本方案优点:极适合单个项目独立开发,不需要安装,使用简单,轻量。
本方案缺点:不便于多个python环境相互切换;不适用于Python2,仅使用于Python3.3及之后的版本。

创建空目录并进入:

mkdir testenv
cd testenv

初始化venv环境(venv 通常会安装你可用的最新版本的Python):

python3 -m venv .

随即该文件夹下便会生成一个python环境。

激活该环境:

cd bin
source activate

退出:

deactivate

方案三:Anaconda(不推荐)

本方案优点:适合机器学习,预装panda/numpy等一系列常用包;有conda更便于细致地管理;便于多个Python环境相互切换。
本方案缺点:大;安装难;使用复杂。

具体步骤写在【安装】Windows下安装Anaconda、pytorch,以及修改pip默认安装路径-shandianchengzi-CSDN博客

方案四:pipenv(不推荐)

参考:pipenv 入门教程 - I’m George - CSDN博客

本方案优点:额外集成了pip的功能。
本方案缺点:该功能对笔者来说没有用。

具体操作可看参考链接,或者官方介绍,在此仅作简单的介绍,并不作具体使用说明。

Python调试方法

个人建议熟悉VScode调试,分析较底层的内容和原理时以pdb打辅助。

具体的调试过程我认为篇幅适中可以单开一篇文章,所以摘出来了,详情请阅读:【工具】VScode|Linux 中怎么调试 Python 项目比较方便?又名 VScode 怎么调试 Python 项目(兼容环境Ubuntu18.04)

本账号所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_46106285/article/details/127463960。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

【记录】环境|Ubuntu18.04 中搭建 Python 开发和调试环境的完整记录的更多相关文章

  1. 在 ubuntu18.04 中搭建 Django 开发环境

    在Ubuntu 18.04 安装 python3.pip3.pycharm,搭建 Django 开发环境. 1.安装 python3 pip3 sudo apt-get install python3 ...

  2. [转]在Eclipse中搭建Python开发环境

    在Eclipse中搭建Python开发环境 来自: http://hi.baidu.com/hqwfreefly/blog/item/2543181d0afd9604314e150e.html 前言 ...

  3. 在Eclipse中搭建Python开发环境

    在Eclipse中搭建Python开发环境 来自: http://hi.baidu.com/hqwfreefly/blog/item/2543181d0afd9604314e150e.html 前言 ...

  4. 搭建Go开发及调试环境(LiteIDE + GoClipse)

    搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇 这里以Windows7 64位为例,如果是32位环境需安装对应版本程序. 一.安装golang1.2.2 1.3 ...

  5. 方案:在Eclipse IDE 中搭建Python开发环境

    Eclipse是一款功能强大的IDE,Python是一种功能强大的计算机语言,但是Python的IDE环境确实很缺乏,如果在强大的Eclipse中添加Python开发环境,那样就很完美了. 在这里,我 ...

  6. Eclipse中搭建Python开发环境

    转载:http://www.cnblogs.com/realh/archive/2010/10/04/1841907.html Eclipse+PyDev环境搭建 1.准备工作 JDK6 Java 开 ...

  7. 在Xcode6中搭建Python开发环境

    http://jingyan.baidu.com/article/f71d60379c73001ab741d14e.html 对于使用Mac电脑,刚入门Python的同学,一定很好奇是不是可以使用Xc ...

  8. xcode7中搭建python开发环境

    1. 双击打开Xcode 2. 点击File->New->New Project 3. 在左边的面板选择Other,右边选择External Build Sytem,点击Next 4. 输 ...

  9. 搭建Eclipse开发和调试环境(真机)

    由于工作原因,最近开始了Android开发.之前接触过一段时间Android,还是在2.x时代. 那个时候搭建开发环境还是挺麻烦的.又是Eclipse,又是ADT的,不同的版本还要安装对应开发包.现在 ...

  10. [原创]在Windows和Linux中搭建PostgreSQL源码调试环境

    张文升http://ode.cnblogs.comEmail:wensheng.zhang#foxmail.com 配图太多,完整pdf下载请点这里 本文使用Xming.Putty和VMWare几款工 ...

随机推荐

  1. Spring Boot项目设置跨域

    一.跨域设置 新建一个配置类 import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterC ...

  2. 让 LLM 来评判 | 奖励模型相关内容

    奖励模型相关内容 这是 让 LLM 来评判 系列文章的第五篇,敬请关注系列文章: 基础概念 选择 LLM 评估模型 设计你自己的评估 prompt 评估你的评估结果 奖励模型相关内容 技巧与提示 什么 ...

  3. IAP升级(STM32)

    IAP升级(STM32) IAP作用简述:将要升级的程序bin文件通过串口发送给STM32,STM32接收后存储到FLASH或者SRAM,用户通过事件(按键等)触发(也可延时自动触发)后将升级 文件夹 ...

  4. Typecho添加一个当前页面加载完成速度时间

    判断当前页面加载是否快速,通常是直接在浏览器中访问网站,看自己的直观感受是否快速.而客观的方法则是计算具体的页面加载时间并显示出来给看. 1.在当前主题的functions.php文件添加下面的代码: ...

  5. 强!10.8K star!推荐一款用于威胁预防、安全检测的开源监控平台,功能非常强大!!

    在当今数字化时代,网络安全威胁日益严峻,企业和组织对于高效.强大的安全解决方案的需求也愈发迫切. 今天给大家分享一个专注于安全监控的开源项目:Wazuh,正是应对这一挑战的有力武器,专门用于帮助个人和 ...

  6. 附035.Kubernetes_v1.25.3高可用部署架构二

    目录 部署组件 kubeadm介绍 kubelet介绍 kubectl介绍 方案概述 方案介绍 部署规划 节点规划 主机名配置 变量准备 互信配置 环境初始化 部署高可用组件 HAProxy安装 Ke ...

  7. 地图可视化,根据绘制的图形生成缩略图,经纬度转换二维canvas坐标系

    一.h5在做可视化地图时,用高德地图绘制空域(圆形,线,多边形),碰到一个需求,根据绘制出来的图形给对应的空域列表项添加一个缩略图. 二.确定实现方法 要根据绘制的图形生成对应图形的缩略图,有两种方式 ...

  8. AI 大模型:现状、挑战与未来多维度发展趋势

    在科技浪潮的推动下,以 Deepseek 为代表的 AI 大模型正以颠覆性力量重塑产业格局.从金融风控到工业质检,从智慧医疗到智能教育,这些轻量化的 AI 工具不仅打破了传统工作模式的桎梏,更构建起一 ...

  9. 【Azure Fabric Service】分享使用Visual Studio 2022发布中国区Service Fabric服务应用的办法

    问题描述 使用Visual Studio 2022如何发布Service Fabric到中国区云服务呢? 因为使用VS2022中的插件无法创建Service Fabric Cluster服务. 那么, ...

  10. PLSQL中查询数据的时候查询结果显示中文乱码

    要需要很努力才能看起来毫不费力.....1.在PLSQL中查询数据的时候查询结果显示中文乱码这里写图片描述2.需要在环境变量中新建两个环境变量:第一个:设置 NLS_LANG=SIMPLIFIED C ...