【记录】环境|Ubuntu18.04 中搭建 Python 开发和调试环境的完整记录
文章目录
以下所有步骤,亲测,并简单对比不同方案的优缺点,以便在不同情况下有选择的余地。主要包括切换Python版本及环境,及VScode/pdb调试方法。
安装Python并切换
参考:
1 安装某个版本
方式一:pyenv安装(强烈推荐)
安装方法:
- 下载依赖:
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
- 克隆pyenv:
git clone git://github.com/yyuu/pyenv.git ~/.pyenv
- 修改~/.bashrc,追加如下内容,保存后重启终端:
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH="${PYENV_ROOT}/bin:${PATH}"
eval "$(pyenv init -)"
fi
使用方式:
- 查看pyenv支持安装的版本:
pyenv install --list
- 安装python3.9.12:
pyenv install 3.9.12
- 查看已安装的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,所以它就不提供了:
此时,你还需要运行如下指令:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32echo "deb http://archive.ubuntu.com/ubuntu/ bionic main restricted" >> /etc/apt/sources.listsudo 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(强烈推荐)
使用方式:
- 查看已安装的python版本:
pyenv versions
- 本地切换版本(推荐):
pyenv local 3.9.12
- 全局切换版本(不推荐):
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(推荐)
参考:
本方案优点:便于多个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(优缺点明显)
参考:
本方案优点:极适合单个项目独立开发,不需要安装,使用简单,轻量。
本方案缺点:不便于多个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|Linux 中怎么调试 Python 项目比较方便?又名 VScode 怎么调试 Python 项目(兼容环境Ubuntu18.04)
本账号所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_46106285/article/details/127463960。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
【记录】环境|Ubuntu18.04 中搭建 Python 开发和调试环境的完整记录的更多相关文章
- 在 ubuntu18.04 中搭建 Django 开发环境
在Ubuntu 18.04 安装 python3.pip3.pycharm,搭建 Django 开发环境. 1.安装 python3 pip3 sudo apt-get install python3 ...
- [转]在Eclipse中搭建Python开发环境
在Eclipse中搭建Python开发环境 来自: http://hi.baidu.com/hqwfreefly/blog/item/2543181d0afd9604314e150e.html 前言 ...
- 在Eclipse中搭建Python开发环境
在Eclipse中搭建Python开发环境 来自: http://hi.baidu.com/hqwfreefly/blog/item/2543181d0afd9604314e150e.html 前言 ...
- 搭建Go开发及调试环境(LiteIDE + GoClipse)
搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇 这里以Windows7 64位为例,如果是32位环境需安装对应版本程序. 一.安装golang1.2.2 1.3 ...
- 方案:在Eclipse IDE 中搭建Python开发环境
Eclipse是一款功能强大的IDE,Python是一种功能强大的计算机语言,但是Python的IDE环境确实很缺乏,如果在强大的Eclipse中添加Python开发环境,那样就很完美了. 在这里,我 ...
- Eclipse中搭建Python开发环境
转载:http://www.cnblogs.com/realh/archive/2010/10/04/1841907.html Eclipse+PyDev环境搭建 1.准备工作 JDK6 Java 开 ...
- 在Xcode6中搭建Python开发环境
http://jingyan.baidu.com/article/f71d60379c73001ab741d14e.html 对于使用Mac电脑,刚入门Python的同学,一定很好奇是不是可以使用Xc ...
- xcode7中搭建python开发环境
1. 双击打开Xcode 2. 点击File->New->New Project 3. 在左边的面板选择Other,右边选择External Build Sytem,点击Next 4. 输 ...
- 搭建Eclipse开发和调试环境(真机)
由于工作原因,最近开始了Android开发.之前接触过一段时间Android,还是在2.x时代. 那个时候搭建开发环境还是挺麻烦的.又是Eclipse,又是ADT的,不同的版本还要安装对应开发包.现在 ...
- [原创]在Windows和Linux中搭建PostgreSQL源码调试环境
张文升http://ode.cnblogs.comEmail:wensheng.zhang#foxmail.com 配图太多,完整pdf下载请点这里 本文使用Xming.Putty和VMWare几款工 ...
随机推荐
- Spring Boot项目设置跨域
一.跨域设置 新建一个配置类 import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterC ...
- 让 LLM 来评判 | 奖励模型相关内容
奖励模型相关内容 这是 让 LLM 来评判 系列文章的第五篇,敬请关注系列文章: 基础概念 选择 LLM 评估模型 设计你自己的评估 prompt 评估你的评估结果 奖励模型相关内容 技巧与提示 什么 ...
- IAP升级(STM32)
IAP升级(STM32) IAP作用简述:将要升级的程序bin文件通过串口发送给STM32,STM32接收后存储到FLASH或者SRAM,用户通过事件(按键等)触发(也可延时自动触发)后将升级 文件夹 ...
- Typecho添加一个当前页面加载完成速度时间
判断当前页面加载是否快速,通常是直接在浏览器中访问网站,看自己的直观感受是否快速.而客观的方法则是计算具体的页面加载时间并显示出来给看. 1.在当前主题的functions.php文件添加下面的代码: ...
- 强!10.8K star!推荐一款用于威胁预防、安全检测的开源监控平台,功能非常强大!!
在当今数字化时代,网络安全威胁日益严峻,企业和组织对于高效.强大的安全解决方案的需求也愈发迫切. 今天给大家分享一个专注于安全监控的开源项目:Wazuh,正是应对这一挑战的有力武器,专门用于帮助个人和 ...
- 附035.Kubernetes_v1.25.3高可用部署架构二
目录 部署组件 kubeadm介绍 kubelet介绍 kubectl介绍 方案概述 方案介绍 部署规划 节点规划 主机名配置 变量准备 互信配置 环境初始化 部署高可用组件 HAProxy安装 Ke ...
- 地图可视化,根据绘制的图形生成缩略图,经纬度转换二维canvas坐标系
一.h5在做可视化地图时,用高德地图绘制空域(圆形,线,多边形),碰到一个需求,根据绘制出来的图形给对应的空域列表项添加一个缩略图. 二.确定实现方法 要根据绘制的图形生成对应图形的缩略图,有两种方式 ...
- AI 大模型:现状、挑战与未来多维度发展趋势
在科技浪潮的推动下,以 Deepseek 为代表的 AI 大模型正以颠覆性力量重塑产业格局.从金融风控到工业质检,从智慧医疗到智能教育,这些轻量化的 AI 工具不仅打破了传统工作模式的桎梏,更构建起一 ...
- 【Azure Fabric Service】分享使用Visual Studio 2022发布中国区Service Fabric服务应用的办法
问题描述 使用Visual Studio 2022如何发布Service Fabric到中国区云服务呢? 因为使用VS2022中的插件无法创建Service Fabric Cluster服务. 那么, ...
- PLSQL中查询数据的时候查询结果显示中文乱码
要需要很努力才能看起来毫不费力.....1.在PLSQL中查询数据的时候查询结果显示中文乱码这里写图片描述2.需要在环境变量中新建两个环境变量:第一个:设置 NLS_LANG=SIMPLIFIED C ...
