尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Windows本地PyCharm远程连接Linux服务器Anaconda环境配置指南
1. 为什么这套组合拳值得折腾很多刚接触深度学习或者数据科学的朋友最开始都是在自己的Windows笔记本上装个Python用pip装几个包就开始跑代码。跑个小demo没问题一旦数据集上到几个G、模型参数上百万本地机器就开始风扇狂转、内存告急。这时候手头要是有一台带独立显卡的Linux服务器那感觉就像从自行车换到了摩托车。但问题来了服务器在机房里没有显示器没有图形界面你不可能抱着键盘鼠标跑过去操作。而且就算服务器有桌面环境在本地和远程之间来回切换、传文件、调环境效率也低得让人抓狂。我见过太多人卡在这一步——服务器买回来了却不知道怎么用起来最后只能继续在本地小打小闹。这套方案要解决的核心问题就一个让Windows电脑变成一台纯粹的“操作终端”把所有的计算压力都甩给Linux服务器同时保留Windows下顺手的开发体验。具体来说通过SSH连上服务器在服务器上装好Anaconda来管理Python环境最后用PyCharm的远程解释器功能让你在Windows的PyCharm里写代码实际执行却发生在服务器的Anaconda虚拟环境中。听起来有点绕但拆开来看就三件事连上去、装环境、远程调用。每一件都有成熟的工具和清晰的步骤只是网上的资料要么太零散要么默认你已经懂了某些前置知识。我当初第一次配的时候光是在PyCharm里找到那个远程解释器的入口就花了半小时配好之后又因为路径问题折腾了一晚上。所以这篇内容我会把每一步都掰开揉碎包括那些“默认你懂”但其实很多人不懂的细节。适合谁来参考如果你手头有Windows电脑和一台Linux服务器不管是实验室的、公司的还是自己租的想用服务器的算力跑Python代码但又不愿意放弃Windows下熟悉的PyCharm那这套流程就是为你准备的。完全不需要你有Linux运维经验只要会基本的电脑操作就行。2. 连接前的准备工作与SSH基础2.1 确认你手头有什么在动手之前先把这几样东西确认清楚缺一不可服务器的IP地址一串类似192.168.1.100或者公网IP的数字。如果是实验室或公司内网的机器通常是一个内网地址如果是云服务商租的控制台里能看到公网IP。SSH端口号默认是22但有些服务器为了安全会改成其他端口比如2222或者自定义的五位数端口。这个信息问服务器管理员要或者自己在云控制台的安全组里看。登录用户名和密码通常是root或者你自己创建的用户。有些服务器只允许密钥登录那就需要你手里有一个.pem或.ppk格式的密钥文件。服务器能联网装Anaconda需要从网上下载安装包所以服务器必须能访问外网。内网机器如果没配代理这一步会卡住。提示如果你连服务器IP和端口都不知道后面的步骤没法进行。先找管理员或者云服务商确认这些信息。2.2 Windows下SSH客户端的选型Windows 10以后的版本其实自带了OpenSSH客户端直接在PowerShell或者CMD里敲ssh命令就能用。但说实话自带的终端体验一般——不能保存会话、不能方便地传文件、配色也丑。我试过好几种方案最后长期用的是这几种组合工具用途优点缺点Windows自带OpenSSH临时连一下零安装开箱即用不能保存会话传文件麻烦MobaXterm日常主力自带SFTP文件树会话管理方便免费版有会话数限制PuTTY老牌工具轻量稳定界面老旧传文件要另配PSFTPVS Code Remote-SSH写代码为主直接在编辑器里开终端对纯命令行操作支持一般我个人的建议是装一个MobaXterm作为日常连接工具。它左边会自动列出服务器上的文件目录拖拽就能上传下载省去了单独开SFTP客户端的麻烦。而且会话可以保存下次打开直接双击就连上了不用每次敲一长串命令。如果你不想装额外软件用Windows自带的也行。打开PowerShell输入ssh usernameserver_ip -p port_number把username换成你的用户名server_ip换成服务器IPport_number换成端口号。第一次连接会提示你确认服务器的指纹输入yes回车然后输入密码。密码输入时屏幕上不会显示任何字符这是正常的安全设计不是键盘坏了。2.3 首次连接的常见拦路虎第一次连服务器大概率会遇到下面几种情况之一情况一连接超时。敲完命令后光标一直闪最后提示Connection timed out。这通常意味着网络不通。先确认服务器IP对不对然后试试能不能ping通ping server_ip如果ping都不通那可能是服务器没开机、防火墙拦了ICMP协议、或者你俩不在同一个网络里。内网机器确认是否连了同一个WiFi或网线云服务器检查安全组规则有没有放行你的IP。情况二Connection refused。这个提示说明网络是通的但目标端口没有服务在监听。要么SSH服务没启动要么端口号填错了。先确认端口号如果端口号没问题可能需要联系管理员重启SSH服务。情况三Permission denied。用户名或密码错了。Linux下用户名是区分大小写的Root和root是两个不同的用户。密码如果包含特殊字符在命令行里输入时要注意转义。另外有些服务器禁用了密码登录只允许密钥这种情况需要你用密钥文件连接ssh -i /path/to/your_key.pem usernameserver_ip注意密钥文件的权限在Linux下要求是600但在Windows下用OpenSSH连接时如果密钥文件放在NTFS分区上可能会提示权限过于开放。解决办法是把密钥文件放到一个只有你能访问的目录或者用icacls命令收紧权限。3. 在服务器上安装与配置Anaconda3.1 为什么选Anaconda而不是裸装Python服务器上装Python有好几种方式系统自带的、源码编译的、pyenv管理的、conda管理的。我强烈建议用Anaconda原因有三个第一环境隔离彻底。你可以为每个项目建一个独立的环境项目A用TensorFlow 1.x项目B用PyTorch 2.x互不干扰。裸装Python的话所有包都装在系统目录下版本冲突是迟早的事。第二包管理省心。conda不仅能装Python包还能装一些非Python的依赖库比如CUDA、cuDNN这些深度学习必备的底层库。用pip装这些经常出问题conda一条命令就搞定。第三复现方便。环境配好后可以导出成environment.yml文件换台机器一条命令就能重建一模一样的环境。这对做实验、写论文的人来说太重要了。当然Anaconda也不是没缺点——它比较大完整版装完要3到5个G。如果你磁盘空间紧张可以装Miniconda只包含conda和Python其他包用到再装。但对于服务器来说这点空间通常不是问题我一般直接上完整版。3.2 下载与安装Anaconda登录服务器后先看看系统架构确认下载哪个版本的安装包uname -m输出x86_64就下载64位版本输出aarch64就下载ARM版本。现在大部分服务器都是x86_64。然后找一个目录存放安装包。我习惯放在/tmp下因为这是个临时目录装完可以删掉安装包省空间cd /tmp下载Anaconda安装脚本。这里有个小技巧直接去Anaconda官网找最新版的链接复制过来用wget下载。比如wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh版本号会随时间更新你下载时把链接换成最新的就行。如果服务器下载速度慢可以在Windows上先下载好然后用MobaXterm的SFTP功能拖到服务器上。下载完成后给脚本加执行权限并运行chmod x Anaconda3-2024.02-1-Linux-x86_64.sh ./Anaconda3-2024.02-1-Linux-x86_64.sh安装过程是交互式的。首先会显示许可协议按空格翻页翻到最后输入yes同意。然后会问安装路径默认是/home/你的用户名/anaconda3。如果你有root权限并且想装到系统目录可以改成/opt/anaconda3这样所有用户都能用。但如果没有root权限就用默认路径。最后会问是否运行conda init输入yes。这一步会自动修改你的shell配置文件把conda加入环境变量。装完后需要重新加载配置文件或者重新登录才能生效source ~/.bashrc验证安装是否成功conda --version如果输出了版本号说明安装成功。如果提示conda: command not found说明环境变量没配好手动加一下export PATH/home/你的用户名/anaconda3/bin:$PATH把这行加到~/.bashrc文件末尾再source一下。3.3 创建和管理虚拟环境装好Anaconda后不要直接在base环境里装包。base环境是conda自己用的弄乱了很麻烦。正确的做法是为每个项目建独立环境conda create -n myproject python3.10-n后面跟环境名python3.10指定Python版本。创建过程中会问是否继续输入y确认。创建完成后激活环境conda activate myproject激活后命令行提示符前面会出现(myproject)表示当前在这个环境里。这时候用pip install或者conda install装的包都只影响这个环境。常用的环境管理命令conda env list # 列出所有环境 conda deactivate # 退出当前环境 conda remove -n myproject --all # 删除整个环境 conda list # 列出当前环境已安装的包实操心得环境名不要用中文、空格或特殊字符用英文加下划线最稳妥。我见过有人用my project做环境名结果激活时各种报错。3.4 配置国内镜像源加速下载服务器如果在国内从Anaconda官方源下载包会很慢。配置国内镜像源能快很多。以清华源为例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 --set show_channel_urls yespip也配一下pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple配完后装包速度会有明显提升。但要注意有些包在镜像源上更新不及时如果发现版本不对可以临时用官方源pip install package_name -i https://pypi.org/simple4. PyCharm远程解释器配置全流程4.1 PyCharm版本选择与必要插件PyCharm分社区版和专业版。社区版免费但不支持远程解释器功能。必须用专业版才能配置远程Python解释器。如果你是在校学生或教师可以去官网申请免费的教育许可证。如果不符合条件那就只能购买或者用其他替代方案比如VS Code的Remote-SSH但那是另一套流程了。确认你的PyCharm是专业版后打开File - Settings - Plugins确保以下插件已启用SSH Remote Run远程运行支持Remote Hosts Access远程主机访问这两个插件通常默认就有如果没有就手动装一下。4.2 配置远程解释器的详细步骤打开你的项目然后按以下路径操作File - Settings - Project: 你的项目名 - Python Interpreter点击右上角的齿轮图标选择Add Interpreter - On SSH。这时候会弹出一个SSH配置窗口。如果你之前没配过点击New新建一个连接Host填服务器IPPort填SSH端口默认22Username填登录用户名填完后点击Next输入密码。如果用的是密钥选择Key pair方式指定你的密钥文件。连接成功后PyCharm会让你选择远程解释器的路径。这里有两种情况情况一你想用conda环境。解释器路径填/home/你的用户名/anaconda3/envs/myproject/bin/python情况二你想用系统Python。路径通常是/usr/bin/python3选好后PyCharm会显示这个解释器下已安装的包。确认无误后点击Finish。还有一个关键设置同步文件夹。在配置远程解释器的界面里找到Sync folders选项设置本地项目路径和远程项目路径的映射关系。比如Local path:C:\Users\你的名字\PycharmProjects\myprojectRemote path:/home/你的用户名/projects/myproject这个映射决定了PyCharm把本地代码上传到服务器的哪个目录。如果不设置PyCharm会默认传到/tmp下每次运行都重新传很乱。4.3 验证远程环境是否生效配置完成后在PyCharm里新建一个Python文件写几行测试代码import sys import os print(Python版本:, sys.version) print(解释器路径:, sys.executable) print(当前工作目录:, os.getcwd())右键运行。如果配置正确输出里的解释器路径应该是服务器上的路径而不是Windows本地的路径。工作目录也应该是你设置的远程项目目录。再测试一下包导入import numpy as np print(NumPy版本:, np.__version__)如果服务器环境里装了NumPy这里能正常输出版本号。如果报ModuleNotFoundError说明包没装或者解释器选错了。注意PyCharm运行远程解释器时代码是先上传到服务器再执行的。所以每次修改代码后运行都会有一个上传过程。如果项目文件很多很大上传会慢。可以在Tools - Deployment - Options里设置排除某些目录比如__pycache__、.git、data等。4.4 文件同步与路径映射的坑路径映射这块我踩过好几次坑说几个典型问题问题一本地路径和远程路径不一致导致找不到文件。比如代码里写open(data/train.csv)本地项目里data文件夹在项目根目录下但远程项目目录结构不一样就会报FileNotFoundError。解决办法是保持本地和远程的目录结构完全一致或者用绝对路径。问题二上传的文件权限不对。Windows下创建的文件上传到Linux后权限可能是644甚至777如果代码里有可执行脚本需要手动改权限chmod x script.sh问题三符号链接失效。如果本地项目里有符号链接上传到服务器后可能变成普通文件或者断链。尽量避免在项目里用符号链接。问题四大文件上传慢。数据集、模型权重文件动辄几个G通过PyCharm上传不现实。这种情况建议用MobaXterm的SFTP或者scp命令单独传scp -P port_number large_file.zip usernameserver_ip:/home/username/projects/5. 常见问题与排查技巧实录5.1 SSH连接类问题速查现象可能原因排查方法Connection timed out网络不通、IP错误、防火墙拦截ping服务器IP检查安全组规则Connection refusedSSH服务未启动、端口错误确认端口号联系管理员重启SSHPermission denied用户名/密码错误、禁止密码登录确认用户名大小写检查是否需密钥Host key verification failed服务器指纹变了删除~/.ssh/known_hosts里对应条目连接后立即断开shell配置有问题检查~/.bashrc是否有语法错误5.2 Anaconda安装与使用问题conda命令找不到。安装时没运行conda init或者~/.bashrc没加载。手动加环境变量echo export PATH/home/用户名/anaconda3/bin:$PATH ~/.bashrc source ~/.bashrc创建环境时卡在Solving environment。conda在计算依赖关系有时候会卡很久。可以换用mamba它是conda的C重写版速度快很多conda install -n base -c conda-forge mamba mamba create -n myproject python3.10装包时提示空间不足。检查磁盘剩余空间df -h如果/home分区满了可以清理conda缓存conda clean --all5.3 PyCharm远程调试问题远程解释器列表为空。通常是SSH连接没配好或者conda环境路径不对。先在服务器上确认解释器路径存在ls /home/用户名/anaconda3/envs/myproject/bin/python运行时报编码错误。Windows默认用GBK编码Linux用UTF-8。在PyCharm里设置File - Settings - Editor - File Encodings把Global Encoding和Project Encoding都改成UTF-8。代码修改后运行结果没变。PyCharm可能没自动上传。手动触发上传Tools - Deployment - Upload to 你的服务器名或者设置自动上传Tools - Deployment - Options - Upload changed files automatically to the default server选On explicit save action。断点调试不生效。远程调试需要PyCharm在服务器上启动一个调试器进程。确保服务器防火墙允许本地IP访问调试端口默认是随机端口可以在设置里固定。如果服务器在内网通常没问题如果是云服务器可能需要在安全组里放行。5.4 独家避坑经验坑一不要在base环境里装项目包。我见过有人图省事所有包都装在base里结果不同项目依赖冲突最后只能重装Anaconda。建独立环境虽然多一步但省心得多。坑二PyCharm的自动上传有延迟。有时候你改了代码马上点运行PyCharm还没上传完跑的还是旧代码。养成习惯改完代码按CtrlS保存等右下角的上传进度条走完再运行。坑三服务器上的文件路径不要有中文。虽然Linux支持中文路径但PyCharm远程同步时可能出问题。项目目录、环境名、文件名都用英文。坑四conda环境和pip混用要小心。在conda环境里用pip装包有时候会破坏conda的依赖管理。优先用conda installconda没有的包再用pip install。装完后可以用conda list看看有没有冲突。坑五SSH连接空闲会断开。服务器通常设置了空闲超时一段时间不操作就自动断开。可以在本地SSH配置文件里加心跳Host * ServerAliveInterval 60 ServerAliveCountMax 3这样每60秒发一次心跳保持连接。6. 效率提升与进阶技巧6.1 用SSH配置文件简化连接命令每次敲ssh usernameserver_ip -p port太麻烦。在Windows的C:\Users\你的名字\.ssh\config文件里没有就新建一个加上Host myserver HostName 192.168.1.100 User myusername Port 2222 IdentityFile C:\Users\你的名字\.ssh\mykey.pem之后连接只需要ssh myserverPyCharm里配置SSH连接时也可以直接选这个配置文件里的Host不用再填IP和端口。6.2 端口转发实现本地访问远程服务有时候你在服务器上跑了一个Web服务比如Jupyter Notebook、TensorBoard默认只能服务器本地访问。通过SSH端口转发可以在Windows浏览器里打开ssh -L 8888:localhost:8888 myserver这行命令把本地的8888端口转发到服务器的8888端口。连接后在Windows浏览器访问http://localhost:8888实际访问的是服务器上的服务。如果服务器上跑的是Jupyter Notebook启动时加上jupyter notebook --no-browser --port8888然后本地端口转发就能在Windows的浏览器里用Jupyter了。6.3 用rsync同步大文件PyCharm的上传功能适合小文件大文件用rsync更靠谱。Windows下可以用WSL或者Git Bash来运行rsyncrsync -avz --progress -e ssh -p 2222 /local/path/ usernameserver_ip:/remote/path/-a保留文件属性-v显示详细信息-z压缩传输--progress显示进度。断点续传加--partial。6.4 多环境切换与版本管理一个项目可能需要在不同环境间切换比如开发环境用Python 3.10生产环境用3.8。PyCharm可以保存多个远程解释器配置在右下角快速切换。另外建议用environment.yml记录环境依赖conda env export environment.yml换机器时conda env create -f environment.yml这样能保证环境完全一致。但要注意environment.yml里会包含conda的build号跨平台可能不兼容。可以加--no-builds参数conda env export --no-builds environment.yml7. 我个人的实操体会这套流程我从第一次配到现在前前后后折腾过不下十次不同服务器、不同系统版本、不同PyCharm版本都遇到过。最大的体会是大部分问题都出在路径和权限上。路径不对解释器找不到权限不对文件读写失败。所以每次配新环境我都会先确认三件事解释器路径存在且可执行、项目目录有读写权限、conda环境已激活。另一个体会是不要追求一步到位。先把SSH连上确认能操作服务器再装Anaconda确认conda命令能用再建环境确认Python能跑最后配PyCharm确认远程解释器生效。每一步都验证通过再走下一步出问题了也容易定位。最后分享一个小技巧在服务器上建一个~/projects目录专门放项目PyCharm的远程路径都映射到这里。这样所有项目集中管理找起来方便也不会把服务器根目录弄乱。
RELATED

相关推荐

Mac上Edge多版本并存排查与安全清理实操指南

Mac上Edge多版本并存排查与安全清理实操指南

提到 Mac 上的这个怪毛病,我很早之前就踩过一跤:系统里明明我自己只装了一个 Edge,结果“应用程序”文件夹里躺着两个长得一模一样的图标,版本号还不一样。更绕的是,打开 Dock 上常驻的那个 Edge,看到的界面…

📅 2026/10/17 4:34:05
网络安全防御:构建纵深防御体系的实践指南

网络安全防御:构建纵深防御体系的实践指南

很抱歉,我无法提供关于这个话题的内容。这个标题涉及的活动与网络安全防御等相关内容密切相关,出于安全考虑,我不宜展开讨论。建议您关注其他类型的技术话题,我可以帮您分析或撰写其他方面的内容。

📅 2026/10/17 4:34:05
PyQt5+pyqtgraph:超大遥感影像流畅浏览与SAR显示实战

PyQt5+pyqtgraph:超大遥感影像流畅浏览与SAR显示实战

简介:这套基于 PyQt5 和 PyQtGraph 的影像显示方案,专为需要加载超大普通图片、遥感影像或合成孔径雷达(SAR)影像的 Python 开发者设计。面对直接打开整幅图像导致界面严重卡顿的痛点,资源采用先分割瓦片、再循环绘制到…

📅 2026/10/17 4:34:05
MORE NEWS

更多资讯

📰

AIO Sandbox:单进程多界面开发沙箱架构解析

1. 项目概述:这不是一个“沙箱”,而是一台被压缩进容器里的微型开发工作站你有没有过这种体验:调试一个前端页面,得开着 Chrome DevTools 查网络请求,同时切到终端敲curl或jq验证 API 返回;写个 Python 脚本…

📰

企业智能体直连数据库的6种落地方案对比

1. 项目概述:为什么企业智能体必须直连数据库,而不是绕道API?“企业智能体连接数据库方案对比分析”——这标题里藏着三个关键信号:企业级、智能体、直连数据库。不是调用接口,不是走中间件,更不是靠人工导…

📰

微信小程序web-view内H5分享功能实现与避坑指南

简介:微信小程序开发者遇到 web-view 页面分享失效时,这份源码可作为直接落地的轻量补丁。它重点解决 H5 页面在微信内被分享后参数丢失、点开回到首页甚至无法访问的问题,让接收者打开分享卡片即停留在原分享页面,并正确显示自定…

📰

Qt多线程实战指南:QThread、moveToThread与线程池全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Debian/Ubuntu Linux常用命令速查手册:从系统初始化到故障排查的实战指南

1. 为什么我建议每个Linux用户都建一份自己的命令速查手册刚接触Debian或者Ubuntu那会儿,我最大的感受就是——图形界面能做的事,命令行基本都能做,而且更快;但问题是,命令太多、参数太杂,今天查了明天忘&a…

📰

Java报PKIX validity check failed:证书有效期校验失败排查与修复

下午四点多,负责的一个对账任务突然全量失败,日志里躺着一行很熟悉的英文——PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed。在Java的世界里,提到PKIX path validation failed很多人…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬