CentOS 7超详细安装Anaconda教程:从conda配置到PyCharm远程调试
CentOS 7上安装Anaconda这套流程我前前后后装了不下二十次从自己折腾到帮同事救火踩过的坑基本能写一本小册子了。很多人以为无非是执行一个sh脚本真正上手才发现问题一个接一个下载慢到怀疑人生、装完打开终端conda命令找不到、Python版本还是系统自带的2.7、conda init和系统自带的Python打架……每一个都能卡住半天。这篇教程就按我实际操作的顺序完整走一遍从下载安装包开始到环境变量、镜像源、虚拟环境、PyCharm远程连接最后把常见报错一次性说清楚。适合刚接触Linux的Python新手也适合需要在服务器上搭建数据科学或深度学习环境的老手照着快速复现。1. 安装前先想清楚这几件事1.1 Anaconda到底帮你解决了什么Anaconda本质上是一个Python发行版但它比裸Python多做了三件很重要的事第一自带conda这个包管理器装包、建虚拟环境、切换Python版本都很方便第二默认预装了NumPy、pandas、matplotlib、scipy等一大批科学计算和数据处理的常用库省去了一上来就面对一堆依赖报错第三conda可以在不同项目之间隔离环境互不干扰。在CentOS 7服务器上这个优势尤其明显。CentOS 7系统自带的Python是2.7而且很多系统命令比如yum、firewall-cmd底层还依赖着这个老Python。如果你贸然把系统默认Python换掉极有可能把系统搞瘫。Anaconda的解决思路不是替换系统Python而是通过PATH优先级把自己放到前面这样在终端里敲python命中的是Anaconda的版本而系统内部工具依然走它们的/usr/bin/python互不干扰。那有人会问为什么不用virtualenv或者venv我个人的体验是如果只用Python 3.6以上且需要自己编译一些二进制包venv确实够用。但数据科学场景下经常要装带CUDA、MKL、OpenBLAS这类底层依赖的包用conda装省心太多依赖解决能力比pip强不少。还有人会提Docker但在很多公司内网环境、集群登录节点上你未必有root权限跑容器Anaconda装在用户目录就能用这才是它最方便的地方。1.2 先确认系统环境再动手别急着下载先登录服务器确认三件事cat /etc/centos-release uname -m free -h df -h第一条看系统版本确保是CentOS 7第二条看CPU架构绝大多数机器是x86_64对应的安装包是Linux-x86_64版本少数ARM架构服务器需要找aarch64版本这个不能搞错否则装完启动直接报“cannot execute binary file”第三条看内存和磁盘占用Anaconda完整装完大约要占3到5GB磁盘空间建议留出10GB以上余量不然装到一半磁盘写满会出一堆莫名其妙的错误。顺便确认一下Python相关的环境变量在安装前执行echo $PATH看一下当前PATH里有没有已经存在的Anaconda或者某个自定义Python路径。如果之前已经装过其他发行版Python为了避免冲突最好先了解它是怎么配置进去的。我遇到过一台机器有人用源码方式编译过Python 3.8装到了/usr/local结果Anaconda装上之后两边抢PATH排查了半天才理清楚。1.3 不同的安装位置和权限选择Anaconda安装路径可以根据使用场景决定常见的有三种当前用户专用默认装到~/anaconda3比如/root/anaconda3或者/home/developer/anaconda3不需要sudo卸载也简单直接删目录。全局共享装到/opt/anaconda3所有人都能用适合开发和运维共用的服务器。团队隔离装到某个共享目录再配合conda的虚拟环境按项目交付不同项目组用不同虚拟环境互不干扰。我的建议是如果是你自己一个人用的开发机或测试机直接装到当前用户目录下最省心如果是多人共用的服务器装到/opt/anaconda3更规范。但要注意装到/opt后需要对目录做权限控制否则其他用户没有读权限conda命令能执行但虚拟环境创建会失败。这里还要提醒一句尽量不要用sudo bash Anaconda3-xxx.sh来安装。因为Anaconda安装脚本检测到当前用户是root会把文件都归root所有之后你用普通用户登录再source环境变量会出现各种权限报错。更稳妥的做法是想给哪个用户用就用哪个用户身份执行安装脚本。2. 获取安装包下载地址和校验方法2.1 看懂安装包文件名的规律Anaconda官网和各大镜像站提供的Linux安装包文件名长这样Anaconda3-2024.10-1-Linux-x86_64.sh这个名字其实信息量很大2024.10是版本号格式是“年份.月份”代表这个发行版基于某年某月的Python和conda版本快照-1是构建序号Linux表示操作系统x86_64是CPU架构。如果你有时看到aarch64那就是ARM架构用的。镜像站的archive目录里会保留历史所有版本按照文件名排序就能看到最新版。有人会困惑为什么教程里让找“Latest”而不是具体某个版本号其实镜像站一般会同时提供带版本号的安装包和指向最新版的软链接。我的习惯是明确下载一个具体的版本号方便后续团队内部统一环境避免有人装了2023版、有人装了2024版最后脚本行为不一致。2.2 在服务器上直接下载如果服务器能直接访问外网用wget或者curl在服务器终端直接下载是最快的。以清华镜像为例cd /root wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.10-1-Linux-x86_64.sh如果系统提示wget: command not found说明这台机器没有安装wget改用curlcurl -O https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.10-1-Linux-x86_64.sh-O参数表示把远程文件保存为当前目录下同名的文件。没有curl的情况很少见CentOS 7最小化安装一般也自带curl。你也可以在自己电脑上先下载好再用scp、Xftp等工具上传到服务器。文件大概500MB到800MB之间看网络情况决定用哪种方式。我的经验是服务器在云上的话直接在服务器上下载通常比本地上传快得多毕竟云服务器的带宽和线路更好。2.3 校验SHA256不要跳过这一步下载完成之后别急着执行先算一下文件的校验值sha256sum Anaconda3-2024.10-1-Linux-x86_64.sh输出会是一长串十六进制字符。然后去镜像站或者Anaconda官方发布页面核对这串值是否一致。这个动作不是走过场我在实际工作中真的遇到过一次文件传输中断导致下载了一半但系统没报错直接执行时安装到一半就挂掉了浪费了十几分钟。另外大文件下载完成后最好确认一下文件大小用ls -lh看是不是和源站显示的大小一致。如果差太多说明下载不完整删掉重下别在这个环节省钱省力。3. 执行安装一次完整实操记录3.1 安装脚本的交互过程进入安装包所在目录执行bash Anaconda3-2024.10-1-Linux-x86_64.sh注意这里用的是bash而不是./。原因很简单如果你没有给这个sh文件加执行权限用./会报Permission denied而bash方式不需要执行权限。虽然可以chmod x再执行但直接bash更省事。安装过程是一路交互式问答手把手拆解一下第一步脚本会显示一段许可协议按回车键逐行翻阅。想直接跳到末尾可以按q然后在Do you accept the license terms?后面输入yes回车。第二步询问安装路径Do you wish the installer to initialize Anaconda3 by running conda init?在更早期的版本里这里会问“Anaconda3 will now be installed into this location: /root/anaconda3”你直接回车就是默认路径输入自定义路径就装到指定位置。注意如果目标路径已经存在且里面有内容脚本会警告你。第三步也是最关键的提示Do you wish the installer to initialize Anaconda3 by running conda init?这里我强烈建议输入yes。关于这个具体机制下一节展开讲。最后脚本显示Thank you for installing Anaconda3!安装就完成了。3.2 “conda init”这个选项到底做了什么老版本的Anaconda安装脚本装完之后只会提示你手动把export PATH/root/anaconda3/bin:$PATH加到.bashrc里然后source一下。新版安装脚本默认会执行conda init它做的事情远不止加一行PATH。我在一台CentOS 7上装完后去翻了一下.bashrc末尾多出来一段类似这样的代码# conda initialize # !! Contents within this block are managed by conda init !! __conda_setup$(/root/anaconda3/bin/conda shell.bash hook 2 /dev/null) if [ $? -eq 0 ]; then eval $__conda_setup else if [ -f /root/anaconda3/etc/profile.d/conda.sh ]; then . /root/anaconda3/etc/profile.d/conda.sh else export PATH/root/anaconda3/bin:$PATH fi fi unset __conda_setup # conda initialize 这段代码的作用是让conda在bash shell里正确初始化shell函数尤其是让conda activate和conda deactivate这两个命令能正常工作。如果你当初选择了no后面自己想当然地只加了export PATH你会发现conda --version能用但conda activate xxx会报CommandNotFoundError或者提示需要先conda init。我见过有人折腾半天手动配环境变量最后发现问题不是出在PATH上而是出在shell函数没有注册。所以如果安装时选了yes就不用再手动改.bashrc了。万一当时选了no直接补一条命令就行/root/anaconda3/bin/conda init bash执行完会提示你to activate the new environment, run: source ~/.bashrc。3.3 安装完成后第一时间验证先重新加载配置文件source ~/.bashrc然后依次检查which python which conda python --version conda --version正常情况下which python的结果应该是/root/anaconda3/bin/pythonwhich conda是/root/anaconda3/bin/condaPython版本显示3.x。如果which python显示的还是/usr/bin/python说明PATH没有生效这时要回头检查.bashrc里的配置看conda initialize段是否存在是否真的被source了。有时候用户用的是zsh或者其他shell配置写到了.zshrc里而source ~/.bashrc当然没效果这种情况需要在对应shell的配置文件里执行conda init zsh之类。还有一点要特别提醒不要因为Python版本看起来是2.7就以为安装失败。Anaconda装完后在base环境里一定是Python 3.x但如果你的终端当前目录下存在某个项目的虚拟环境激活脚本或者有其他优先级更高的PATH条目命中的可能不是Anaconda。养成好习惯一切以which python输出为准。4. 环境变量与配置细节4.1 环境变量的生效机制原理讲清楚很多教程让你改.bashrc但没说为什么。这里把原理说透当你在bash里输入一个命令比如pythonshell会按照PATH环境变量里记录的目录顺序从左到右逐个查找名为python的可执行文件找到第一个就停止。Anaconda之所以能“覆盖”系统Python不是真的覆盖了/usr/bin/python而是因为/root/anaconda3/bin在PATH里排在/usr/bin前面。.bashrc是交互式bash每次启动时都会读取的配置文件所以把PATH写在这里每次新开终端都会生效。但注意vim ~/.bashrc修改完后当前终端不会自动重新读取必须source ~/.bashrc或者重新登录才生效。这是新手最容易犯的错明明改对了却不source以为没改成功。还要注意有些云服务器在用户目录里还会有个.bash_profile如果.bash_profile里没有主动source.bashrc那你改.bashrc可能根本不会生效。CentOS 7默认情况下.bash_profile会调用.bashrc但如果你或者之前的运维改过就要留意。排查方法很简单grep bashrc ~/.bash_profile有输出说明会加载没有就手动加一行source ~/.bashrc。4.2 手动配置.bashrc的两种写法虽然没有出意外的话conda init已经帮你配置好了但理解手动配法依然有意义尤其当你需要把Anaconda迁移到其他目录、或者想要多用户共用时。第一种写法最简版只加PATHexport PATH/root/anaconda3/bin:$PATH这行能解决conda命令找不到的问题但正如前面说的conda activate对shell函数的支持会不正常。我自己测试过只加PATH的终端里执行conda activate报错信息往往让人摸不着头脑。第二种写法完整版就是用conda init生成的代码块或者手动引用conda的初始化脚本source /root/anaconda3/etc/profile.d/conda.sh这两行配合起来既能保证conda命令可用也能让虚拟环境的激活功能正常。所以我的建议是别为了“简洁”只加一行PATH直接完整引用conda.sh或者执行conda init bash省得后面踩坑。4.3 多个用户共用一套Anaconda的注意事项如果服务器是多人用的把Anaconda装在/opt/anaconda3之后其他用户默认是无法读写这个目录的。你有两个选择一是创建时就把目录组权限放开二是通过ACL精细控制。比较省事的做法chown -R root:developers /opt/anaconda3 chmod -R grwX /opt/anaconda3把Anaconda目录的所属组改成developers并给组用户读写权限。这样developers组内的所有用户都能执行conda并创建虚拟环境。然后在/etc/profile.d/下新建一个anaconda.shexport PATH/opt/anaconda3/bin:$PATH所有用户登录时都会自动加载这个PATH。但要注意每个用户自己创建的conda虚拟环境默认放在各自家目录的~/.conda/envs下所以A用户创建的虚拟环境B用户看不到除非你不按默认把虚拟环境集中创建到公共目录比如conda create -p /opt/conda-envs/data_analysis python3.10用-p直接指定环境路径而不是用-n指定环境名。这种方法适合团队里需要共享同一套Python环境的项目。缺点是每个用户都要在PATH里加上对应环境的bin目录或者每次激活时用完整路径稍微麻烦一点但可控性更强。5. 配置国内镜像源并创建虚拟环境5.1 写好.condarc下载速度立竿见影安装完Anaconda之后第一件事我建议先把conda的下载源切到国内镜像。原因很简单默认源在大洋彼岸下载一个常见的包动不动几十KB/s激活环境时反复卡住体验很差。切到国内高校的公共开源镜像源之后速度提升是肉眼可见的。这里以清华镜像源为例。在用户目录下创建或修改.condarc文件vim ~/.condarc填入以下内容channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud这段配置的意思是保持defaults通道作为默认搜索源但把它的实际下载地址替换成清华镜像的三个子库同时把常用的第三方通道conda-forge、pytorch、bioconda等也指向清华的cloud目录。保存之后执行conda clean -i -y-i参数用来清理索引缓存确保下一次conda不会拿着旧索引去访问原地址。如果不做这一步有时候conda会沿用缓存的channels信息配置不生效下载还是走老路子。除了清华源中科大源和阿里源也是备选三者的配置格式基本一致镜像源配置文件中default_channels替换为清华源https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main等中科大源https://mirrors.ustc.edu.cn/anaconda/pkgs/main等阿里源https://mirrors.aliyun.com/anaconda/pkgs/main等我的习惯是清华源为主偶尔遇到清华同步不及时导致某个包404时就临时切换到中科大或者阿里。但一般清华源的同步速度已经很快了日常完全够用。5.2 创建与管理虚拟环境镜像源搞定之后就可以创建虚拟环境了。为什么一定要用虚拟环境我的说法是不要把你的base环境当成日常工作的主战场。base环境相当于系统默认环境装了一堆包之后很难维护出了问题也很麻烦。每个项目建一个独立环境让依赖的版本互不干扰这才是conda最核心的价值。创建一个Python 3.10的虚拟环境名字叫py310conda create -n py310 python3.10 -y常用管理命令汇总conda env list # 查看所有虚拟环境 conda activate py310 # 激活虚拟环境 python --version # 确认环境内Python版本 conda deactivate # 退出虚拟环境 conda env remove -n py310 # 删除某个虚拟环境 conda env export environment.yml # 导出当前环境的完整依赖列表这里有三个经验分享第一环境命名要有意义。test1、test2这种名字过两周你自己都想不起来是干嘛的。我常用py310-torch、tf215-gpu这样的格式把Python版本和主要框架写进名字里一眼就知道用途。第二conda create的时候不要加pythonlatest之类一定要指定具体版本。Anaconda默认源的策略有时候会把最新的Python 3.13列为默认但很多深度学习框架还不支持折腾半天又得重建环境。第三虚拟环境建好后装包尽量在对应环境内用conda install或者pip install。注意一个常见坑在虚拟环境里直接敲pip有时候命中的是base环境的pip尤其是PATH配置不干净的时候。确认方法是执行which pip看路径是否在环境目录下。5.3 以PyTorch为例验证整套链路配置完镜像源和环境接下来用一个实际场景验证整个安装是否成功。以现在最常用的PyTorch为例。如果机器没有NVIDIA GPU或者不想先折腾驱动就先装CPU版本conda activate py310 conda install pytorch torchvision torchaudio cpuonly -c pytorch -y-c pytorch指定从pytorch通道安装cpuonly这个包是PyTorch官方用来标记CPU版本的辅助包。有GPU的机器先执行nvidia-smi确认显卡驱动正常再看一下CUDA版本然后到PyTorch官网选择对应的安装命令。官网会根据你的操作系统、包管理器、CUDA版本自动生成conda或pip命令比手写靠谱。装完验证一下python -c import torch; print(torch.__version__)如果你看到类似2.x.xcu121的输出说明整个链路都是通的Anaconda安装成功、conda源配置正确、虚拟环境创建正常、包能正常安装和导入。这一套没问题后面再装其他包基本不会再出幺蛾子。我在实际排查别人环境时发现很多“Anaconda装完但还不能用”的问题其实最后都出在卡包这一步。不是Anaconda的问题而是源没配对、环境没激活、或者PATH不对导致pip装到了base。所以这里放一个“以PyTorch为验证标尺”的环节特别值能一次性把所有环节检查到位。6. 让PyCharm连上服务器上的Anaconda6.1 远程解释器的连接配置Anaconda在服务器上装好之后很多人的开发习惯还是在本地希望PyCharm能直接调用服务器上的conda环境。这比写完代码上传服务器执行要高效得多尤其是深度学习训练和数据处理场景数据存在服务器上直接在远程环境里调试是最舒服的。先说前提只有PyCharm Professional版支持SSH远程解释器社区版不含这个功能。如果你用的是社区版要么升级要么改用VS Code Remote-SSH要么就在服务器上跑Jupyter Lab然后用本地浏览器访问。PyCharm配置远程解释器的步骤打开项目进入File - Settings - Project - Python Interpreter。点击右侧齿轮或者Add Interpreter选择On SSH。填服务器的IP、端口默认22、用户名。选择认证方式密码或者密钥文件。公司内网建议用密钥认证省得每次连接输密码。选择解释器类型为Existing conda environment然后在Python interpreter path里选择对应的虚拟环境Python路径。比如我们刚创建的py310环境路径应该是/root/anaconda3/envs/py310/bin/python选好路径后PyCharm会开始建立索引这一步比较慢项目越大越慢。索引完成后代码的自动补全、跳转定义、调试全部走远程环境跟本地开发几乎没有区别。这里分享一个坑PyCharm连接远程解释器时要求服务器上有对应路径的Python可执行文件并且当前用户要有读取权限。如果Anaconda是root装的而你用普通用户连接很可能因为权限不够导致同步失败。解决办法是把Anaconda目录加入用户组可读或者用有权限的用户连接。6.2 文件同步和路径那点事远程解释器配好后PyCharm并不是直接读写服务器上的项目文件而是通过SFTP在本地和远程之间做同步。默认情况下你需要手动配置部署信息进入Tools - Deployment - Configuration。点加号选择SFTP类型填服务器地址和认证信息。在Mappings标签页把本地项目目录映射到服务器上的某个路径。这个映射关系很重要。如果你本地项目在D:/projects/my_project远程想放到/home/dev/my_project就在Mappings里分别填写然后保存。之后每次保存文件PyCharm会自动把改动上传到远程。也可以在Options里勾选Upload on save效果更直接。路径问题是最容易踩坑的地方。代码里如果用相对路径写文件比如open(data.csv)本地运行时读取的是本地data.csv通过远程解释器运行时这个相对路径会首先在远程项目的当前目录里找。如果你本地和远程项目结构不完全一致文件路径一不一样分分钟给你报FileNotFoundError。建议在代码里尽量避免裸的相对路径要么用Path(__file__).parent这种基于脚本位置的写法要么在配置里统一约定远程项目目录结构。6.3 远程调试的坑远程调试时和本地调试体验最明显的差别体现在三件事环境变量、端口、缓存。第一环境变量。本地调试时PyCharm会读取本地的系统环境变量但远程解释器运行时代码里os.environ.get()读到的变量完全取决于服务器。很多时候你在本地能跑通的代码上远程就报错就是因为某个环境变量没设置。解决办法是在PyCharm的Run/Debug Configurations里给脚本单独配Environment variables或者统一写在服务器的~/.bashrc里。第二端口。如果你的代码启动了某个Web服务或者需要连接远程数据库要确认服务器的安全组和防火墙放行了对应端口。CentOS 7默认firewalld是开着的搞不定就先用systemctl stop firewalld临时关掉排查确认是端口问题再精细配置。第三缓存。PyCharm远程同步偶尔会出现本地文件没更新到远程的情况尤其是多个设备同时改项目的时候。我的习惯是修改关键文件后手动执行一次Tools - Deployment - Upload to避免代码跑起来还是旧逻辑排查半天才反应过来。同样如果远程依赖装了新包而PyCharm本地索引还没同步自动补全和检查会报错这时候重启一下PyCharm的远程索引进程就好。7. 常见问题与排查技巧实录7.1 conda: command not found这是最常见的安装后问题。原因无非三种安装完没执行source ~/.bashrc当前终端会话还不知道conda的路径。配置文件改错了比如改的是~/.bash_profile但实际生效的是~/.bashrc或者反过来。安装时选择了不初始化然后也没手动配PATH。排查路径很直接ls -l /root/anaconda3/bin/conda先确认conda是真的存在。然后看PATHecho $PATH | grep anaconda如果输出为空说明PATH里确实没有需要往.bashrc里加配置或者执行conda init bash。7.2 权限类报错报Permission denied时先看是哪个文件没权限。如果是执行sh脚本时直接用bash Anaconda3-xxx.sh可以绕开执行权限问题。如果是访问某个conda目录时用ls -ld看目录权限检查当前用户是否为目录属主或所属组。一个特别值得警惕的坑很多人在普通用户下遇到权限不足第一反应是加sudo。但如果你在普通用户下用sudo conda install装了包这些文件会变成root所有之后普通用户再操作同一个环境就会各种permission denied。正确的做法是尽量不要在conda环境里用sudo真到非用不可的地步说明这个环境不该放在用户目录下或者你应该先调整目录权限。7.3 各种卡在Loading或闪退问题Anaconda Navigator在服务器或远程桌面环境下容易出问题最常见的就是闪退或者一直卡在“loading applications”。原因主要是CentOS 7的图形库和Navigator版本不兼容或者是Navigator要访问网络刷新应用列表网络不通时表现就是无限loading。我的建议是服务器上的Anaconda能用命令行就绝不打开Navigator。所有环境管理都通过conda命令完成稳定、快速、可脚本化。如果确实需要图形界面先在命令行更新一下Navigatorconda update anaconda-navigator -y如果还不行安装缺失的图形依赖库yum install libXcomposite libXdamage libXrandr libXi -y另外有时会遇到“There is an instance of Anaconda already running”的提示。这多半是某个conda进程异常退出留下了锁文件。先去任务管理器或者用ps aux | grep conda确认没有实际进程在跑然后找到并删除对应的.lock文件比如/opt/anaconda3/pkgs/.lock或者~/.conda/pkgs/.lock再重试。注意不要在所有conda进程都在运行的时候删锁文件否则会造成包索引损坏。7.4 CondaSSLError与包下载失败CondaSSLError是SSL证书验证失败常见于系统时间不同步或者企业内网的SSL证书被替换。第一步一定先检查服务器时间date如果时间和实际相差太多执行yum install ntpdate -y ntpdate ntp.aliyun.com然后尝试更新conda和ca-certificates证书包conda update conda ca-certificates -y如果是包下载失败报404或者连接超时八成是镜像源配置问题。执行conda config --show channels确认当前使用的通道。如果发现某条通道依然指向官方源修改.condarc后重试并执行conda clean -i清理索引缓存。还有一类是“Package xxx is already installed”但导入还是报错这时候往往不是conda的锅而是环混了。排查思路见下节。7.5 ImportError环境错乱排查很多人在Anaconda装好之后会突然遇到之前没见过的导入错误比如ImportError: cannot import name xxx from simpeg这种。问题根源往往是解释器搞混了你在终端激活了conda虚拟环境但PyCharm或者其他IDE实际用的还是另一个环境的Python。碰到任何导入报错第一件事是确认当前Python到底是哪个which python python -c import sys; print(sys.executable) python -c import simpeg; print(simpeg.__file__)如果sys.executable输出路径和你期望的虚拟环境路径不一致说明解释器选错了。在终端里就重新激活对应环境conda activate 环境名确认环境正确后再看包版本。很多“cannot import name”其实是包版本太旧或者主包和子包版本不匹配导致的。把当前版本打出来pip show simpeg然后去官方文档查一下API变更记录。比如我遇到过有人装的TensorFlow 2.16里tf.contrib被移除代码还是照着老教程写的那自然不能运行。这种问题不是环境坏了是语言和框架本身在往前走老代码需要适配。7.6 卸载Anaconda的干净方法哪天你不想要Anaconda了直接删目录可不行会留下一堆环境变量和配置文件。规范的卸载流程是先退出所有虚拟环境conda deactivate删除整个安装目录rm -rf /root/anaconda3清理用户配置文件rm -rf ~/.conda ~/.condarc ~/.continuum最后编辑~/.bashrc把conda init生成的代码块整段删掉。如果你是用/etc/profile.d/anaconda.sh方式配置的PATH也要一并删除。如果忘记清理.bashrc删完目录后每次新开终端都会看到-bash: /root/anaconda3/bin/conda: No such file or directory这样的提示。虽然不影响系统运行但看着非常难受。删干净配置是卸载流程里非常重要的一步。顺便说一个日常习惯我每次装完Anaconda并配好所有环境之后都会把.condarc、.bashrc相关配置、conda env export导出的环境清单这三样东西备份一份放到~/setup-backup/目录下。服务器迁移、换机器或者环境崩了重装的时候这类备份能让你半小时内从零恢复到熟悉的开发环境而不是重新去一个个回忆装了什么包、改了哪些配置。这套流程看着长熟练之后十分钟内就能跑完。多装几次你就会理解每一步到底在做什么到时候哪怕遇到别的Linux发行版或者需要帮同事排查别人的环境也不会两眼一抹黑。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →