【记录】环境|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 3B4FE6ACC0B21F32
echo "deb http://archive.ubuntu.com/ubuntu/ bionic main restricted" >> /etc/apt/sources.list
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(强烈推荐)
使用方式:
- 查看已安装的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。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix