尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Ubuntu20.04手动配置Miniconda3与Python3环境:从环境变量到清华源全解析

Ubuntu20.04手动配置Miniconda3与Python3环境:从环境变量到清华源全解析 1. 项目概述为什么需要手动配置Python科学计算环境在Linux服务器或者个人开发机上搭建Python环境几乎是每个开发者、数据科学家或运维工程师的必修课。你可能遇到过这样的情况系统自带的Python版本老旧或者多个项目依赖的Python包版本冲突导致“装了这个那个就报错”。更头疼的是默认的软件源下载速度慢如蜗牛一个几百兆的Anaconda安装包能下到天荒地老。这就是我们今天要解决的问题。项目标题“Ubuntu20Miniconda3Python3 安装配置环境手动添加环境变量更换清华源”直指三个核心痛点操作系统基础、轻量级Python环境管理以及国内网络环境优化。Ubuntu 20.04 LTS是一个稳定且广泛使用的Linux发行版Miniconda3是Anaconda的轻量级替代只包含conda、Python和一些基础包把选择权完全交给你而手动添加环境变量和更换清华源则是为了获得完全的控制权和飞一般的下载体验。我经历过太多次在全新服务器上从零开始配置环境的场景也踩过不少坑。比如conda初始化脚本没选对导致shell启动变慢环境变量路径写错一个字母导致命令找不到或者没换源之前pip install一个包等到怀疑人生。这篇文章我会把这些经验掰开揉碎带你走一遍我认为最清晰、最可控的手动配置流程。无论你是刚接触Linux的新手还是想优化自己工作流的老手这套方法都能让你对环境了如指掌告别“玄学”报错。2. 核心思路与工具选型为什么是Miniconda3而非其他在Python的世界里环境管理工具有不少比如virtualenv、venv、pyenv以及我们今天的主角conda。选择Miniconda3背后有一整套逻辑。2.1 Conda vs. Pip/Virtualenv不仅仅是包管理很多人分不清conda和pip。简单来说pip是Python的包安装器它只管理Python包。virtualenv或venv可以创建独立的Python解释器环境解决项目间依赖冲突。而conda是一个跨平台的环境管理器和包管理器。它的强大之处在于管理非Python依赖很多科学计算包如NumPy, SciPy依赖底层的C/Fortran库。Conda可以一并管理这些二进制依赖避免了“编译地狱”。你用pip装numpy可能会因为缺少正确的线性代数库如OpenBLAS, MKL而失败或性能不佳conda直接给你一个优化好的二进制版本。环境隔离更彻底Conda创建的环境是真正隔离的包括Python解释器本身、所有包以及它们的系统级依赖。你可以在同一台机器上拥有Python 3.8和Python 3.11的多个环境互不干扰。通道Channel概念Conda-forge、bioconda等社区频道提供了极其丰富的、预编译好的软件包远超PyPI的范畴。那么为什么选Miniconda而不是完整的AnacondaAnaconda安装后自带超过150个科学计算包体积超过3GB。对于服务器或追求纯净、定制化的用户来说这太臃肿了。Miniconda只包含conda、Python和少量必须的依赖体积小巧约100MB。你需要什么再通过conda install去安装环境非常干净。这符合“按需索取”的极客精神也节省了宝贵的磁盘空间。2.2 为什么强调“手动添加环境变量”和“更换清华源”自动化脚本如运行conda init固然方便但它会修改你的shell配置文件如~/.bashrc有时会引入复杂的启动逻辑甚至与其他工具冲突。手动添加环境变量意味着你清楚地知道conda命令被添加到了系统的哪个路径知道如何启用或禁用一个conda环境。当环境出现问题时这种“透明性”让你能快速定位。这是一种更底层、更可控的做法尤其适合系统管理员或追求环境洁癖的用户。至于“更换清华源”这纯粹是为了速度。Conda和pip的默认源服务器在国外国内直连速度不稳定且慢。清华大学开源软件镜像站提供了完整的镜像将下载速度从几十KB/s提升到几MB/s甚至更高这是提升工作效率最直接、最有效的一步。注意手动配置意味着你需要对Linux命令行和文件系统有基本了解。如果你是完全的新手希望一键搞定那么安装后直接运行conda init可能是更简单的选择。但如果你想真正理解背后的机制请跟着我继续。3. 实操准备下载Miniconda3安装脚本我们的第一步是获取Miniconda3的安装脚本。我将演示最通用的方法使用命令行工具wget进行下载。3.1 确定系统架构与Python版本打开你的Ubuntu 20.04终端。首先我们需要确认系统架构虽然对于大多数现代电脑和云服务器都是x86_64架构。你可以通过以下命令查看uname -m如果输出是x86_64或amd64那么我们就选择对应的64位版本。接下来访问Miniconda的官方文档页面通常可以从Anaconda官网找到链接查看最新的稳定版本。目前Miniconda3通常默认捆绑Python 3.9或更高版本。我们的目标是安装一个较新的Python 3版本比如Python 3.9或3.10。3.2 使用wget下载安装脚本我们不从官网直接下而是从清华镜像站下载这一步就开始加速。清华源提供了Miniconda的镜像。进入一个你有写入权限的目录比如家目录下的Downloads文件夹或直接在家目录cd ~使用wget命令下载安装脚本。你需要构建正确的下载链接。以最新的Miniconda3对应Python 3.10的Linux 64位版本为例wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh这个链接指向的是“最新版”。如果你想安装一个特定版本可以去镜像站目录下查找具体的版本号。3.3 验证下载完整性可选但推荐下载完成后最好验证一下文件的完整性防止下载过程中出错。Miniconda官方会提供安装脚本的SHA256校验和。首先获取你下载文件的SHA256值sha256sum Miniconda3-latest-Linux-x86_64.sh这会输出一长串哈希值。然后去Miniconda的官方GitHub Release页面或Anaconda安装文档页面找到对应版本的正确SHA256值。对比两者是否一致。 如果一致说明文件完好无损。如果不一致你需要重新下载。实操心得对于生产服务器校验完整性是必须的步骤。对于个人开发如果网络稳定偶尔可以跳过但养成校验的习惯能避免很多因文件损坏导致的诡异安装错误。4. 安装Miniconda3执行脚本与关键选择下载好的安装脚本是一个Shell脚本我们需要运行它。4.1 赋予执行权限并运行默认下载的文件可能没有执行权限。我们需要先授权然后执行。chmod x Miniconda3-latest-Linux-x86_64.sh ./Miniconda3-latest-Linux-x86_64.sh4.2 跟随安装向导做出关键选择执行脚本后会出现一个文本安装向导。这里有几个关键步骤需要你交互阅读许可协议一直按回车键翻阅直到最后。它会问你是否接受许可协议输入yes然后回车。选择安装位置这是第一个关键点。安装程序会建议一个默认路径通常是/home/你的用户名/miniconda3。我强烈建议使用这个默认路径或者安装到一个你有完全读写权限的路径下比如/opt/miniconda3但这可能需要sudo权限。直接按回车使用默认路径即可。注意不要安装到系统目录如/usr/bin下以免和系统包管理器管理的Python冲突。也不要安装到路径中包含空格或特殊字符的目录。是否运行conda init这是第二个也是最重要的关键点。安装程序最后会问Do you wish the installer to initialize Miniconda3 by running conda init? [yes|no]为了贯彻我们“手动配置”的核心这里一定要输入no然后回车 如果这里你选了yes安装程序会自动修改你的~/.bashrc文件添加一大段conda初始化代码。这虽然方便但失去了我们手动控制的意义而且有时会导致shell启动变慢。我们选择no自己来管理。安装完成后脚本会提示你conda已经被安装到了你指定的目录但还没有被加入到PATH环境变量中因此你还不能直接使用conda命令。这正是我们接下来要手动做的事情。5. 手动配置环境变量让系统找到conda命令环境变量PATH是系统查找可执行命令的目录列表。我们现在需要把Miniconda的bin目录添加到PATH中。5.1 定位conda可执行文件路径假设你按照默认路径安装那么conda命令所在的目录是/home/你的用户名/miniconda3/bin。请将你的用户名替换成你的实际用户名例如我的用户名是ubuntu那么路径就是/home/ubuntu/miniconda3/bin。你可以通过ls命令确认这个目录是否存在以及conda文件是否在里面ls -la /home/你的用户名/miniconda3/bin/conda5.2 临时添加PATH测试用在永久修改前我们可以先临时添加测试conda命令是否可用。在终端执行export PATH/home/你的用户名/miniconda3/bin:$PATH这条命令将Miniconda的bin目录添加到了当前终端会话的PATH变量的最前面$PATH代表原有的PATH值。现在尝试运行conda --version如果正确输出了conda的版本号如conda 24.1.2恭喜你conda已经可以工作了。但这个设置只对当前这个终端窗口有效关闭后就失效了。5.3 永久添加PATH到shell配置文件为了让每次打开终端都能使用conda我们需要将上面那条export命令写入shell的配置文件中。对于Ubuntu默认的bash shell这个文件是家目录下的.bashrc。使用文本编辑器如nano或vim打开.bashrc文件nano ~/.bashrc滚动到文件的最末尾添加以下两行代码# Miniconda3 PATH export PATH/home/你的用户名/miniconda3/bin:$PATH第一行是注释方便你以后知道这行是干什么的。第二行就是我们的核心命令。请务必替换/home/你的用户名/为你的实际路径。保存并退出编辑器。在nano中按CtrlX然后按Y确认保存再按回车确认文件名。让配置立即生效刚刚修改的配置文件不会立即在当前终端生效。你需要“重新加载”它source ~/.bashrc或者你也可以直接关闭当前终端重新打开一个新的终端。再次验证在新终端或执行了source的终端里运行conda --version和python --version。你应该能看到conda和Python的版本信息并且这个Python应该指向你刚安装的Miniconda中的Python。注意事项手动添加PATH的方式比conda init更简洁。conda init会添加更多内容来实现conda环境的自动激活/退出功能即修改PS1提示符。我们手动方式目前只添加了命令路径。conda的环境激活功能我们后续会通过conda activate命令来手动管理这同样更清晰。6. 配置Conda与Pip的清华镜像源环境变量配好了现在我们来解决速度问题。分别配置conda和pip的镜像源。6.1 配置Conda清华源Conda通过“通道”channels来获取软件包。我们需要将默认通道替换为清华镜像。执行以下命令来添加通道并设置优先级。这些命令会修改用户目录下的.condarc配置文件。conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes--add channels添加镜像通道。顺序很重要conda会按添加顺序搜索包。通常将main和free放在前面。--set show_channel_urls yes这个设置非常有用。它让以后conda install安装包时显示包是从哪个通道下载的。方便你确认镜像源是否生效。你可以查看生成的~/.condarc文件来确认配置cat ~/.condarc输出应该类似channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ - defaults show_channel_urls: true注意defaults通道即官方源被自动添加到了最后。这意味着conda会先搜索清华镜像如果找不到再回退到官方源这是一个安全的策略。6.2 配置Pip清华源Conda环境内的pip也会使用自己的配置。我们需要为pip单独配置镜像。首先升级pip到最新版使用镜像站升级python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple然后创建或修改pip的配置文件。pip的配置文件可以放在用户目录下~/.pip/pip.confLinux/macOS。创建配置目录和文件mkdir -p ~/.pip nano ~/.pip/pip.conf在pip.conf文件中写入以下内容[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple trusted-host pypi.tuna.tsinghua.edu.cnindex-url指定镜像地址。trusted-host将该主机标记为受信任否则在使用HTTPS镜像时可能会有警告。保存并退出。现在无论是使用conda安装通过我们配置的conda通道还是使用pip安装通过我们配置的pip源都应该能从国内镜像高速下载了。7. Conda环境管理核心操作实战环境管理是conda的灵魂。下面我们进行一系列实战操作。7.1 创建第一个独立环境永远不要在conda的base基础环境中直接安装项目依赖。为每个项目创建独立的环境是最佳实践。假设我们要创建一个名为my_project的环境并指定安装Python 3.9conda create -n my_project python3.9-n my_project指定环境名称为my_project。python3.9指定该环境的Python版本。conda会自动解决依赖并安装Python 3.9及其相关核心包。执行命令后conda会列出将要安装的包询问你是否继续输入y回车。7.2 激活与退出环境环境创建好后需要“激活”才能使用其中的Python和包。激活环境conda activate my_project激活后你的命令行提示符(base)通常会变成(my_project)这表明你当前正处在这个环境中。此时运行的python、pip命令都是这个环境下的。退出当前环境回到base环境conda deactivate7.3 在环境中安装与管理包激活my_project环境后你可以使用conda安装包。例如安装NumPy和Pandasconda activate my_project conda install numpy pandas由于我们配置了清华源下载速度会很快。安装时注意看输出确认下载地址是tuna.tsinghua.edu.cn。你也可以使用pip安装一些conda通道里没有的包此时pip会使用我们之前配置的清华源pip install some_package_not_in_conda查看当前环境中已安装的包conda list7.4 环境导出与复现这是团队协作和项目部署的关键。将环境导出到一个文件conda env export environment.yml这个environment.yml文件精确记录了所有包的名称、版本和构建号。其他人拿到这个文件可以在他的机器上复现一个一模一样的环境conda env create -f environment.yml实操心得对于生产部署我更喜欢用conda env export --from-history它只导出你显式安装的包而不是所有依赖包这样文件更简洁兼容性也更好。但前提是你清楚地知道所有直接依赖。8. 常见问题与深度排查指南即使按照步骤操作你也可能会遇到一些问题。这里记录了几个最常见的问题和我的解决方法。8.1 命令未找到conda: command not found这是最典型的问题说明环境变量PATH没有设置正确。检查步骤确认你安装的路径是否正确ls -la /home/你的用户名/miniconda3/bin/conda。检查.bashrc文件中的export语句是否正确路径是否拼写错误。检查是否执行了source ~/.bashrc或者是否打开了新的终端。使用echo $PATH命令查看PATH变量确认你的miniconda的bin目录是否在输出中并且位置靠前。8.2 Conda环境激活失败提示conda activate无效在较新版本的conda中conda activate和conda deactivate命令是通过shell函数实现的。如果你在安装时选择了conda init no并且只是简单地将bin目录加入PATH那么这些函数可能没有被加载。解决方案你需要手动初始化conda的shell功能但我们可以用更可控的方式。在~/.bashrc中除了添加PATH再添加以下内容# Miniconda3 PATH and Shell Integration export PATH/home/你的用户名/miniconda3/bin:$PATH # conda initialize # !! Contents within this block are managed by conda init !! __conda_setup$(/home/你的用户名/miniconda3/bin/conda shell.bash hook 2 /dev/null) if [ $? -eq 0 ]; then eval $__conda_setup else if [ -f /home/你的用户名/miniconda3/etc/profile.d/conda.sh ]; then . /home/你的用户名/miniconda3/etc/profile.d/conda.sh else export PATH/home/你的用户名/miniconda3/bin:$PATH fi fi unset __conda_setup # conda initialize 这段代码实际上就是conda init bash命令会添加到.bashrc中的内容。你可以手动复制过去。保存后source ~/.bashrcconda activate命令就应该可用了。8.3 下载速度依然很慢或者连接超时这说明镜像源可能没有生效或者当前镜像站临时不可用。排查步骤运行conda config --show查看当前conda配置确认channels列表里是否有清华源的地址。运行conda info在输出中查看channel URLs确认是否指向了清华镜像。对于pip运行pip config list查看配置确认index-url是否正确。可以尝试临时使用其他国内镜像源如阿里云(mirrors.aliyun.com)、中科大(mirrors.ustc.edu.cn)的源替换掉清华源的地址方法类似。8.4 创建环境或安装包时出现“Solving environment”卡住Conda的依赖解析器在包版本冲突复杂时可能会耗时很长。应对策略指定更具体的版本不要只写conda install numpy尝试conda install numpy1.21减少解析范围。使用--no-deps选项慎用conda install package_name --no-deps只安装指定包不解决其依赖。这需要你手动管理依赖仅适用于高级用户。使用MambaMamba是一个用C写的conda替代前端依赖解析速度极快。你可以在base环境里安装它conda install -n base -c conda-forge mamba然后使用mamba create -n env_name python3.9和mamba install package_name语法和conda完全一样但速度快得多。8.5 如何彻底卸载Miniconda如果你想推倒重来手动安装的方式也让卸载变得非常清晰。删除整个Miniconda安装目录rm -rf /home/你的用户名/miniconda3从~/.bashrc中删除我们添加的与conda相关的所有行包括PATH和初始化代码块。删除conda的配置文件rm -rf ~/.condarc ~/.conda ~/.continuum最后执行source ~/.bashrc或打开新终端conda就应该完全从你的系统中消失了。这套手动配置的方法虽然前期步骤比一键安装稍多但它赋予了你对开发环境最清晰的控制力和理解。你知道每一个命令、每一个变量、每一个配置文件的作用。当环境出现任何问题时你都能像外科医生一样精准定位而不是寄希望于重启或者重装。这种掌控感正是专业开发者与普通用户的区别所在。
返回列表