[求助]Python中PyCharm FTP连接失败但FileZilla正常,如何排查和解决?

好急
[求助]Python中PyCharm FTP连接失败但FileZilla正常,如何排查和解决?

4 回复

ftp 有两种模式,passive 和 active,看是不是与这个有关。


这个问题我遇到过,PyCharm的FTP/SFTP配置确实比FileZilla挑剔一些。核心问题通常是连接参数或网络配置的差异。

先检查PyCharm的配置路径:File → Settings → Build, Execution, Deployment → Deployment,确保:

  1. 连接类型选对(FTP/FTPS/SFTP)
  2. 主机、端口、用户名、密码和FileZilla完全一致
  3. 根路径是否正确(FileZilla显示的是服务器绝对路径)

如果基础配置没问题,试试这两个关键点:

1. 被动模式设置 PyCharm默认用被动模式(PASV),有些服务器或防火墙不支持。在Deployment配置的"Advanced Options"里,把"Passive mode"选项取消勾选试试。

2. 编码问题 如果服务器是Linux而本地是Windows,可能会遇到路径编码问题。在"Advanced Options"里把"Path encoding"改为UTF-8

完整测试代码(用Python的ftplib验证配置):

from ftplib import FTP
import socket

def test_ftp_connection(host, port, username, password, timeout=10):
    try:
        # 测试连接
        ftp = FTP()
        ftp.connect(host, port, timeout)
        ftp.login(username, password)
        
        # 测试被动/主动模式
        print("测试被动模式...")
        ftp.set_pasv(True)  # 被动模式
        print(f"当前目录: {ftp.pwd()}")
        
        print("\n测试主动模式...")
        ftp.set_pasv(False)  # 主动模式
        print(f"当前目录: {ftp.pwd()}")
        
        ftp.quit()
        print("连接测试成功!")
        return True
        
    except Exception as e:
        print(f"连接失败: {type(e).__name__}: {e}")
        return False

# 用你的配置测试
test_ftp_connection(
    host='your_host',
    port=21,  # FTP默认端口
    username='your_username',
    password='your_password'
)

运行这个脚本,看哪种模式能成功,然后在PyCharm里对应调整。

如果还不行,检查PyCharm的代理设置:File → Settings → Appearance & Behavior → System Settings → HTTP Proxy,确保和系统代理一致。

总结:重点查被动模式和编码设置。

老铁 是 passive mode 刚配置完服务器的时候 test ftp connection 是 ok 的 一会再连就连不上了 脑阔疼

借老铁吉言 突然又正常了 铜币已发

回到顶部