【经验】Ubuntu18.04切换Python版本及环境,及VScode/pdb调试方法(全)
文章目录
以下所有步骤,笔者这些天均亲自测试并使用,并简单对比不同方案的优缺点,以便在不同情况下有选择的余地。
安装Python并切换
参考:
安装某个版本(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
参考:
本方案优点:便于多个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
参考:
本方案优点:极适合单个项目独立开发,安装简单,使用简单,轻量。
本方案缺点:不便于多个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
本方案优点:额外集成了pip的功能。
本方案缺点:该功能对笔者来说没有用。
具体操作可看参考链接,或者官方介绍,在此仅作简单的介绍,并不作具体使用说明。
Python调试方法
个人建议熟悉VScode调试,分析较底层的内容和原理时以pdb打辅助。
方案一:VScode
优点:有图形化界面,易用,适用于绝大多数情况。
缺点:需要一定的配置过程,不是所有程序都知道该怎么配置才能使它正常运行。
在VScode中切换Python版本(运行及调试时)
Ctrl+Shift+P
,选择配置项,输入interpreter
选择Python解释器。
如下图所示:
修改后,在运行和调试时均会自动采取该解释器。
调试本地模块及第三方库
有关
launch.json
文件的配置可参考VScode官网的文档-Launch configurations。
问题一:vscode python 调试闪退
解决办法:去官网安装VScode(在软件商店安装的阉割版无法支持中文输入),并将VScode的Python插件降级。
问题二:本地模块调试方法(找不到模块)
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
,运行模块。若仍有其他问题,请参考本节参考链接。
- 不需要在其他目录直接运行模块时,直接
python -m onemodule.test
。
2)在VScode中调试它
新建文件,引入该模块即可断点调试,如下:
import onemodule.test
onemodule.test.main() #在此行打断点
问题三:调试并进入第三方库的代码
由于调试器默认不进入第三方代码,所以需要修改调试选项对应的launch.json
文件。
如下图,点击添加配置进入launch.json
文件:
如下图,将justMyCode
选项改成false
即可:
问题四:VScode中传递命令行参数
同上,点击进入配置launch.json
文件,如下图,添加args参数:
方案二:pdb
优点:完全不需要配置;能直接调试模块/第三方库;对于已经知道用命令行如何运行,但不知道怎么在VScode中运行的python程序,不妨直接采取pdb
进行调试。
缺点:无便捷的图形化界面。
需要调试时,只需在调试的代码前插入如下代码:
import pdb
pdb.set_trace()
再在命令行多加一个pdb
,比如执行:python -m pdb onemodule.pdbtest
,即可调试。
与gdb调试相似,pdb
在终端打印的代码是即将执行的而不是执行完成的。
常用指令:
- n命令(next),让代码单步运行;s命令(单步进入,细运行),该命令会进入方法。
- <variable_name>.d(data),查看的中间变量variable_name的值。(注:对于大部分的类型,直接输入变量名即可)
- b <line>,在第line行打断点;b命令,查看所有断点。
- c命令(continue),让代码直接运行。
- clear <breakpoint_order>,清除第breakpoint_order个断点。
- l命令,查看多行当前运行的代码。
- 任何python代码,都可直接输入,如
print("1")
,非常方便。 - q命令,退出。
【经验】Ubuntu18.04切换Python版本及环境,及VScode/pdb调试方法(全)的更多相关文章
- Linux(ubuntu18.04)切换python版本
前言 Ubuntu18.04系统在安装python时会安装两个版本:2.7和3.6.默认情况下系统环境使用的是python2,但是我们有时需要使用python3来作为我们的开发环境,所以需要自由切换p ...
- 虚拟机 Ubuntu18.04 tensorflow cpu 版本
虚拟机 Ubuntu18.04 tensorflow cpu 版本 虚拟机VMware 配置: 20G容量,可扩充 2G内存,可扩充 网络采用NAT模式 平台:win10下的Ubuntu18.04 出 ...
- Ubuntu18.04安装Python虚拟环境
仅为使用Ubuntu18.04的Python开发人员作参考 1.安装Ubuntu18.04虚拟环境 sudo apt install virtualenv sudo apt install virtu ...
- Python关键点笔记之使用 pyenv 管理多个 Python 版本依赖环境
0x00 背景 从接触Python以来,一直都是采用virtualenv和virtualenvwrapper来管理不同项目的依赖环境,通过workon.mkvirtualenv等命令进行虚拟环境切换, ...
- Linux系统之路——python多版本共存问题(ps:自行切换python版本,pip安装遇到的一些问题)
经常遇到这样的情况: 系统自带的Python是2.6,自己需要Python 2.7中的某些特性: 系统自带的Python是2.x,自己需要Python 3.x: 此时需要在系统中安装多个Python, ...
- Windows下升级Python3.7.7后(原Python3.6.2版本)如何切换Python版本
笔者:风起怨江南 出处:https://www.cnblogs.com/mengjinxiang 笔者原创,文章欢迎转载,如果喜欢请点赞+关注,谢谢! 问题:window系统下,如果升级了最新的Pyt ...
- 在Ubuntu18.04中QT编程的环境构建(转)
在Ubuntu18.04中QT编程的环境构建 原点分析 百家号06-2110:14 如果说QT大家觉得陌生的话,那么 Windows 早年推出的C++图形用户界面的应用程序开发框架MFC,应该是耳熟能 ...
- Python—版本和环境的管理工具(Pipenv)
pipenv简介 虚拟环境本质是一个文件,是为了适应不同的项目而存在.pipenv相当于virtualenv和pip的合体. 整合了 pip+virtualenv+Pipfile,能够自动处理好包的依 ...
- PyCharm切换Python版本
由于代码格式问题,很多情况下需要我们去切换Python版本,那么在当下火爆的PyCharm中是如何切换Python版本的呢? 打开File菜单,选择Settings: 打开Settings窗口后,选择 ...
- React 环境搭建及页面调试方法
React 环境搭建及页面调试方法 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和博客园共有 ...
随机推荐
- 【忍者算法】从生活场景到回文链表:探索对称性检测|LeetCode 234 回文链表
从生活场景到回文链表:探索对称性检测 生活中的回文现象 在日常生活中,回文无处不在.比如"上海自来水来自海上"."12321"这样正着读和倒着读都一样的字符串或 ...
- 基于Trae开发的自动表关联查询工具
对于复杂的一些业务,会涉及很多张表,其间有各种各样的关联关系,在开发&测试过程中,随时需要查看这些表中的数据状态,这种情况下需要我们写一些关联查询的SQL或者多条SQL执行来查看结果,个人感觉 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 26 期(2025年2.10-2.16)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- SAM 学习笔记
发现自己根本没有 SAM 基础,所以想补一篇学习笔记. SAM SAM 是一个可以接受字符串 \(s\) 的所有后缀的最小 \(DFA\)(确定性有限状态自动机).不过他最大的用处和后缀数组一样,都是 ...
- 百万架构师第四十二课:Nginx:Nginx 的初步认识|JavaGuide
百万架构师系列文章阅读体验感更佳 原文链接:https://javaguide.net 公众号:不止极客 Nginx 的初步认识及配置 课程目标 Nginx 在分布式架构中的应用分析 常用的 Web ...
- android无障碍开发 企业微信 机器人
实现 Android 无障碍开发 企业微信 机器人 作为一名新入行的开发者,你可能对如何开发一个支持企业微信的无障碍机器人感到迷茫.在这篇文章中,我将为你详细讲解实现这一功能的流程和代码示例. 流程概 ...
- Flink学习(四) Flink Table & SQL 实现wordcount Java版本
Flink Table & SQL WordCountFlink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准 SQL 语义的开发语言. 一个完 ...
- Vue3路由进阶实战:深度解析参数传递与导航守卫核心技术
一.路由参数传递的进阶应用技巧 1.1 路由配置与参数验证 // router/index.js { path: '/user/:userId(\\d+)', // 使用正则表达式限制只匹配数字 na ...
- go 结构体根据某个字段进行排序
前言 在任何编程语言中,关乎到数据的排序都会有对应的策略,我们来看下 Golang 是怎样对数据进行排序,以及我们如何优化处理使用 go 排序 go 可以针对任何对象排序,虽然很多情况下是一个 sli ...
- 小程序和APP抓包的问题
小程序和APP抓包的问题 很多同学都会遇到小程序和APP抓不到包的问题,抓不到https请求包,这边给大家提供一些解决方案. Yakit工具 首先需要的就是一个抓包神器yakit,这个工具非常好用强大 ...