如何将PyCharm与WinSCP关联以简化代码上传流程?
简化PyCharm到服务器的代码上传流程
绝对有办法!我之前也烦透了每次写完代码还要切到WinSCP手动上传的流程,后来摸索出几个靠谱的方案,按你的需求选就行:
方法一:用PyCharm自带的Deployment功能(最推荐)
这是PyCharm原生支持的功能,完全不用额外工具,配置一次之后就能一键甚至自动上传。步骤如下:
- 打开PyCharm的设置:
File -> Settings(Windows/Linux)或者PyCharm -> Settings(Mac) - 找到
Build, Execution, Deployment -> Deployment,点击右上角的+号,选择SFTP(和WinSCP用的是同一种协议) - 在弹出的窗口里填服务器信息:
- Name:随便起个好记的名字,比如“我的服务器”
- Host:服务器IP或域名
- Port:默认22,如果你改了SSH端口就填对应的
- Username/Password:你的服务器登录账号密码,也可以用SSH密钥更安全
- 切换到
Mappings标签页,配置本地和服务器的路径映射:- Local path:选你本地项目的根目录
- Deployment path on server:选服务器上你要放代码的目录(比如
/home/your_user/project)
- 最后可以开自动上传:回到
Deployment的主界面,勾选Upload changed files automatically to the default server,这样你本地修改保存后,代码会自动同步到服务器,完全不用手动操作! - 手动上传的话,右键点击文件/目录,选
Deployment -> Upload to [你的服务器名]就行,还能选Sync with Deployment来双向同步本地和服务器的文件。
方法二:配置远程Python解释器(连运行都在服务器上)
如果你的代码本来就要在服务器上运行,那直接把PyCharm的解释器改成服务器上的,这样代码会自动同步,运行调试都直接在服务器完成:
- 打开
Settings -> Project: 你的项目名 -> Python Interpreter - 点击右上角的齿轮图标,选
Add - 在弹出的窗口里选
SSH Interpreter,然后填服务器的登录信息,和上面Deployment的配置类似 - 配置完后,PyCharm会自动把本地代码同步到服务器的指定目录(你可以在配置里选路径),之后你点运行/调试按钮,代码直接在服务器上执行,完全不用手动传文件。
方法三:用Git钩子自动同步(适合用Git管理代码的场景)
如果你的项目已经用Git做版本控制,可以用Git的钩子脚本实现提交后自动上传到服务器:
- 本地项目的
.git/hooks目录里,新建一个post-commit文件(没有后缀),内容大概是:#!/bin/sh git push server master # 假设你已经把服务器设为远程仓库 - 服务器那边也要配置Git仓库,然后在服务器仓库的
.git/hooks里新建post-receive文件:#!/bin/sh git --work-tree=/home/your_user/project_dir checkout -f - 给这两个钩子文件加执行权限:
chmod +x post-commit和chmod +x post-receive
这样你本地git commit之后,代码会自动push到服务器,服务器自动把代码同步到运行目录,适合团队协作或者需要版本回溯的场景。
方法四:写个上传脚本+PyCharm外部工具
如果上面的方法都不合你意,也可以自己写个简单的Python上传脚本,然后加到PyCharm的外部工具里一键运行:
- 先安装依赖:
pip install paramiko scp - 写个上传脚本(比如
upload_to_server.py):import paramiko from scp import SCPClient def upload_code(): # 替换成你的服务器信息 host = "192.168.x.x" port = 22 username = "your_username" password = "your_password" local_dir = "./" # 本地项目根目录 remote_dir = "/home/your_user/project" # 服务器目标目录 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: ssh.connect(host, port, username, password) with SCPClient(ssh.get_transport()) as scp: # 递归上传整个目录 scp.put(local_dir, remote_dir, recursive=True) print("代码上传成功!") finally: ssh.close() if __name__ == "__main__": upload_code() - 在PyCharm里配置外部工具:
File -> Settings -> Tools -> External Tools,点击+号:- Name:比如“一键上传到服务器”
- Program:选你本地的Python解释器路径(比如
C:\Python39\python.exe) - Arguments:填脚本的绝对路径(比如
$ProjectFileDir$/upload_to_server.py) - Working directory:填
$ProjectFileDir$
配置完后,在Tools菜单里就能找到这个工具,点一下就自动上传代码了。
小提示
不管用哪个方法,记得把不需要上传的文件(比如venv、.idea、__pycache__)排除掉,避免浪费时间上传没用的文件。比如用Deployment的话,在Deployment -> Excluded Paths里添加这些目录就行。
内容的提问来源于stack exchange,提问作者mblackplum
相关产品推荐
相关产品推荐

