以下所有步骤,笔者这些天均亲自测试并使用,并简单对比不同方案的优缺点,以便在不同情况下有选择的余地。

安装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

安装某个版本(Python3以3.9为例):

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.9
sudo apt install python3.9-distutils

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

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

查看所有版本:

ls /usr/bin | grep python

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

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 3
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1

切换python版本:

sudo update-alternatives --config python

如下图:


输入编号即可选择。

创建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:

sudo apt install virtualenv
sudo apt install virtualenvwrapper
pip3 install virtualenv
pip3 install virtualenvwrapper
# pip install virtualenv
# pip install virtualenvwrapper

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

export WORKON_HOME=$HOME/.virtualenvs
source /usr/share/virtualenvwrapper/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

优点:有图形化界面,易用,适用于绝大多数情况。
缺点:需要一定的配置过程,不是所有程序都知道该怎么配置才能使它正常运行。

在VScode中切换Python版本(运行及调试时)

Ctrl+Shift+P,选择配置项,输入interpreter选择Python解释器。

如下图所示:

修改后,在运行和调试时均会自动采取该解释器。

调试本地模块及第三方库

有关launch.json文件的配置可参考VScode官网的文档-Launch configurations

问题一:vscode python 调试闪退

参考:vscode python 调试闪退

解决办法:去官网安装VScode(在软件商店安装的阉割版无法支持中文输入),并将VScode的Python插件降级。

问题二:本地模块调试方法(找不到模块)

参考:python 【No module named】找不到自己写的模块 3种情况及解决方法-玛丽莲茼蒿-CSDN博客

1)本地模块的运行方法
  1. 需要在其他目录直接运行模块时
    对于本地模块,需要在其他目录直接运行模块时,可将模块所在目录的上一级目录添加至当前Python环境的模块查找目录下:
cd <your_python_path>/
cd lib/python3.6/site-packages #根据自己的版本
sudo echo "模块所在目录的上一级目录" > 随便命名.pth

比如,__init__.py文件在/home/s/mycode/mymodule/onemodule/目录下,则“模块所在目录的上一级目录”是/home/s/mycode/mymodule/

添加完成后,即可执行python -m onemodule.test,运行模块。若仍有其他问题,请参考本节参考链接

  1. 不需要在其他目录直接运行模块时,直接python -m onemodule.test
2)在VScode中调试它

新建文件,引入该模块即可断点调试,如下:

import onemodule.test

onemodule.test.main() #在此行打断点

问题三:调试并进入第三方库的代码

参考:vscode断点调试python第三方包 - 大钦差 - 掘金

由于调试器默认不进入第三方代码,所以需要修改调试选项对应的launch.json文件。
如下图,点击添加配置进入launch.json文件:

如下图,将justMyCode选项改成false即可:

问题四:VScode中传递命令行参数

同上,点击进入配置launch.json文件,如下图,添加args参数:

方案二:pdb

参考:如何动态调试Python的第三方库-ybdesire-CSDN博客

优点:完全不需要配置;能直接调试模块/第三方库;对于已经知道用命令行如何运行,但不知道怎么在VScode中运行的python程序,不妨直接采取pdb进行调试。
缺点:无便捷的图形化界面。

需要调试时,只需在调试的代码前插入如下代码:

import pdb
pdb.set_trace()

再在命令行多加一个pdb,比如执行:python -m pdb onemodule.pdbtest,即可调试。

与gdb调试相似,pdb在终端打印的代码是即将执行的而不是执行完成的。

常用指令:

  1. n命令(next),让代码单步运行;s命令(单步进入,细运行),该命令会进入方法。
  2. <variable_name>.d(data),查看的中间变量variable_name的值。(注:对于大部分的类型,直接输入变量名即可)
  3. b <line>,在第line行打断点;b命令,查看所有断点。
  4. c命令(continue),让代码直接运行。
  5. clear <breakpoint_order>,清除第breakpoint_order个断点。
  6. l命令,查看多行当前运行的代码。
  7. 任何python代码,都可直接输入,如print("1"),非常方便。
  8. q命令,退出。

【经验】Ubuntu18.04切换Python版本及环境,及VScode/pdb调试方法(全)的更多相关文章

  1. Linux(ubuntu18.04)切换python版本

    前言 Ubuntu18.04系统在安装python时会安装两个版本:2.7和3.6.默认情况下系统环境使用的是python2,但是我们有时需要使用python3来作为我们的开发环境,所以需要自由切换p ...

  2. 虚拟机 Ubuntu18.04 tensorflow cpu 版本

    虚拟机 Ubuntu18.04 tensorflow cpu 版本 虚拟机VMware 配置: 20G容量,可扩充 2G内存,可扩充 网络采用NAT模式 平台:win10下的Ubuntu18.04 出 ...

  3. Ubuntu18.04安装Python虚拟环境

    仅为使用Ubuntu18.04的Python开发人员作参考 1.安装Ubuntu18.04虚拟环境 sudo apt install virtualenv sudo apt install virtu ...

  4. Python关键点笔记之使用 pyenv 管理多个 Python 版本依赖环境

    0x00 背景 从接触Python以来,一直都是采用virtualenv和virtualenvwrapper来管理不同项目的依赖环境,通过workon.mkvirtualenv等命令进行虚拟环境切换, ...

  5. Linux系统之路——python多版本共存问题(ps:自行切换python版本,pip安装遇到的一些问题)

    经常遇到这样的情况: 系统自带的Python是2.6,自己需要Python 2.7中的某些特性: 系统自带的Python是2.x,自己需要Python 3.x: 此时需要在系统中安装多个Python, ...

  6. Windows下升级Python3.7.7后(原Python3.6.2版本)如何切换Python版本

    笔者:风起怨江南 出处:https://www.cnblogs.com/mengjinxiang 笔者原创,文章欢迎转载,如果喜欢请点赞+关注,谢谢! 问题:window系统下,如果升级了最新的Pyt ...

  7. 在Ubuntu18.04中QT编程的环境构建(转)

    在Ubuntu18.04中QT编程的环境构建 原点分析 百家号06-2110:14 如果说QT大家觉得陌生的话,那么 Windows 早年推出的C++图形用户界面的应用程序开发框架MFC,应该是耳熟能 ...

  8. Python—版本和环境的管理工具(Pipenv)

    pipenv简介 虚拟环境本质是一个文件,是为了适应不同的项目而存在.pipenv相当于virtualenv和pip的合体. 整合了 pip+virtualenv+Pipfile,能够自动处理好包的依 ...

  9. PyCharm切换Python版本

    由于代码格式问题,很多情况下需要我们去切换Python版本,那么在当下火爆的PyCharm中是如何切换Python版本的呢? 打开File菜单,选择Settings: 打开Settings窗口后,选择 ...

  10. React 环境搭建及页面调试方法

    React 环境搭建及页面调试方法 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和博客园共有 ...

随机推荐

  1. DeepSeek+PageAssist实现本地大模型联网

    技术背景 在前面的几篇博客中,我们分别介绍过在Ubuntu上部署DeepSeek.在Windows上部署DeepSeek.使用AnythingLLM构建本地知识库的方法,其中还包含了ChatBox的基 ...

  2. WPF IValueConverter and IMultiValueConverter

    1. 实现DataGrid column的显示和隐藏功能: (1). 定义ContextMenu ,该ContextMenu仅可使用于DataGrid的DataGridColumnHeader: &l ...

  3. Flink学习(十一) Sink到Elasticsearch

    导入依赖 <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-conn ...

  4. 【论文随笔】基于会话的推荐系统构建方法调查(Survey On Methods For Building Session-Based Recommender Systems)

    前言 今天读的论文为一篇于2023年发表在国际开放信息技术杂志(International Journal of Open Information Technologies)的论文,文章是关于构建基于 ...

  5. Abaqus Matrix Genrate 分析 | 输出总体刚度

    引言 abaqus 可以输出模型的刚度/质量/阻尼/载荷矩阵等: 输出单元刚度矩阵 输出范围可以是一个单元,也可以是多个单元 输出总体刚度矩阵 输出的数据是整个模型的刚度矩阵,或者是某一特定区域的总体 ...

  6. gorm插入报错Error 1292 (22007): Incorrect datetime value: ‘0000-00-00‘ for column ‘xxx‘ at row 1

    在MySQL中,'0000-00-00 00:00:00'不是一个合法的DATETIME值.从MySQL 5.7.5开始,默认情况下不允许插入零日期或零时间值到DATETIME或 TIMESTAMP列 ...

  7. Font-awesome失效恢复

    Font-awesome失效恢复策略 可能的原因有: 1.用了收费pro的版本,没充钱. Font Awesome 6 字体分为 Free 和 Pro 两个版本.Font Awesome 6 Free ...

  8. es6 形参的陷阱

    先看代码: var x = 1; function s (a,y = function (){ x = 2 }){     var x = 1;     y();     console.log(x) ...

  9. 【技术分析】EIP-7702 场景下 EOA 授权签名的安全探讨

    EIP-7702 在 2025 年即将到来的以太坊 Pectra 升级中,将会引入 EIP-7702 这个提案.其主要的内容就是使得 EOA 账户拥有了自己的 Storage ,并且可以通过 dele ...

  10. mysql-installer-community-8.0.19.0.msi 的自定义安装与卸载

    一.双击运行安装包执行安装 1.选择Custom,该种方式可以设置安装位置,仅安装所需的组件,点击Next 2.选择需要的组件,点击Advanced Options 3.设置安装位置,点击OK 4.点 ...