码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【经验】Ubuntu18.04切换Python版本及环境,及VScode/pdb调试方法(全)


    文章目录

    • 安装Python并切换
      • 1 安装某个版本
        • 方式一:pyenv安装(一般程度推荐)
        • 方式二:apt安装(不推荐)
          • Python3
          • Python2
          • 查看所有apt装上的版本
      • 2 切换python版本
        • 方式一:pyenv(一般程度推荐)
        • 方式二:改链接(不推荐)
        • 方式三:update-alternatives(不推荐)
    • 创建Python虚拟环境
      • 方案一:virtualenv+virtualenvwrapper(推荐)
      • 方案二:venv(优缺点明显)
      • 方案三:Anaconda(不推荐)
      • 方案四:pipenv(不推荐)
    • Python调试方法

    以下所有步骤,亲测,并简单对比不同方案的优缺点,以便在不同情况下有选择的余地。主要包括切换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
    1. 克隆pyenv:
    git clone git://github.com/yyuu/pyenv.git ~/.pyenv
    
    • 1
    1. 修改~/.bashrc,追加如下内容,保存后重启终端:
    export PYENV_ROOT="${HOME}/.pyenv"
     
    if [ -d "${PYENV_ROOT}" ]; then
      export PATH="${PYENV_ROOT}/bin:${PATH}"
      eval "$(pyenv init -)"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    使用方式:

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

    这种方法装好了之后不一定记得自己装在哪里了,有点麻烦,不过胜在稳定。

    方式二: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
    
    • 1
    • 2
    sudo apt update
    sudo apt install python3.7 -y
    sudo apt install python3.7-distutils -y
    
    • 1
    • 2
    • 3

    如果不安装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.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    Python2

    Python2以python2.7为例:

    sudo apt install python2
    sudo apt-get install -y libsasl2-dev libldap2-dev libssl-dev
    
    • 1
    • 2

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

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

    2 切换python版本

    方式一:pyenv(一般程度推荐)

    使用方式:

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

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

    更换默认python3的版本为3.6

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

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

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

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

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

    添加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
    
    • 1
    • 2

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

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

    切换python/python3版本:

    sudo update-alternatives --config python
    sudo update-alternatives --config python3
    
    • 1
    • 2

    如下图:

    请添加图片描述
    输入编号即可选择。

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

    python3 -m pip install --upgrade pip
    
    • 1

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

    创建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
    
    • 1
    • 2
    • 3
    • 4

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

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

    启用配置文件:

    source ~/.bashrc
    
    • 1

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

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

    其他指令:

    lsvirtualenv #查看虚拟环境
    workon <virtual_name> #切换到某个虚拟环境
    deactivate #退出某个虚拟环境
    rmvirtualenv <virtual_name> #删除某个虚拟环境
    cdvirtualenv #进入到虚拟环境所在的目录
    cdsitepackages <package_name> # 进入到虚拟环境的某个python包目录下
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    参考:

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

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

    创建空目录并进入:

    mkdir testenv
    cd testenv
    
    • 1
    • 2

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

    python3 -m venv .
    
    • 1

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

    激活该环境:

    cd bin
    source activate
    
    • 1
    • 2

    退出:

    deactivate
    
    • 1

    方案三: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。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

  • 相关阅读:
    食品行业申请ISO22000认证条件、流程、资料及意义有哪些
    Linux 的权限
    超级超级灵性的解题思路,看了全部的题解,没有人想到这个思路,真·力扣唯一——用单调栈处理LeetCode 1562 查找大小为M的最新分组
    MATLAB | 全网唯一,使用MATLAB绘制好看的韦恩图(venn)
    微信开发者工具 / 反编译工具CrackMinApp 下载安装
    Unity中的【格式化数据】进行【系列化】和【反系列化】操作
    电商数据|淘宝商品数据接口接入|参数|获取商品订单物流|电商数据分析
    orbslam2 安装过程记录
    SQL语言概述与SQL语言的数据定义
    flink解决mysql中 tinyint 类型字段取数变成 true/false
  • 原文地址:https://blog.csdn.net/qq_46106285/article/details/127463960
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号