You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python 3在macOS下与Raspberry Pi 3通信?求分步方案

在macOS用Python 3与Raspberry Pi 3通信的可行方案

当然可以!我帮你整理了两种最实用的实现方式,都是用Python 3在macOS和树莓派3之间建立通信的靠谱方案,一步步来肯定能解决你的问题:

方案1:通过SSH远程执行代码/传输数据

这种方式适合远程控制树莓派运行脚本、传输文件,是最常用的远程交互方式。

步骤1:开启树莓派的SSH功能

  • 如果树莓派接了显示器:打开终端,输入sudo raspi-config,依次选择Interfacing Options → SSH → Enable,重启树莓派生效。
  • 如果没接显示器:烧录系统镜像后,在SD卡的boot分区新建一个无后缀名的空白文件ssh,插入树莓派开机后会自动开启SSH。

步骤2:获取树莓派的局域网IP

在树莓派终端输入hostname -I,记下输出的IP地址(比如192.168.1.100),后续会用到。

步骤3:macOS上用Python实现SSH通信

我们用paramiko这个Python库来实现SSH连接:

  1. 先安装库:打开macOS终端,输入pip3 install paramiko
  2. 示例代码(远程执行命令+传输文件):
import paramiko

# 替换成你的树莓派信息
raspi_ip = "192.168.1.100"
raspi_user = "pi"  # 默认用户名是pi
raspi_password = "raspberry"  # 默认密码是raspberry

# 建立SSH连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(raspi_ip, username=raspi_user, password=raspi_password)

# 远程执行命令,比如查看树莓派CPU温度
stdin, stdout, stderr = ssh.exec_command("vcgencmd measure_temp")
print("树莓派CPU温度:", stdout.read().decode())

# 传输文件(从macOS传到树莓派)
sftp = ssh.open_sftp()
local_file = "/Users/你的用户名/Desktop/test.txt"  # macOS本地文件路径
remote_file = "/home/pi/test.txt"  # 树莓派目标路径
sftp.put(local_file, remote_file)
print("文件传输完成")

# 关闭连接
sftp.close()
ssh.close()

方案2:基于TCP/IP套接字的实时网络通信

这种方式适合自定义实时数据交互(比如传感器数据传输、远程控制指令发送),需要分别在树莓派和macOS上运行服务端/客户端代码。

步骤1:树莓派上运行服务端代码

打开树莓派的Python编辑器,输入以下代码并运行(先不要关闭):

import socket

# 监听所有可用的网络接口,端口自定义(比如65432)
HOST = '0.0.0.0'
PORT = 65432

# 创建TCP套接字
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    print("树莓派服务端已启动,等待连接...")
    conn, addr = s.accept()
    with conn:
        print(f"已连接macOS设备:{addr}")
        while True:
            # 接收macOS发送的数据
            data = conn.recv(1024)
            if not data:
                break
            print(f"收到macOS消息:{data.decode('utf-8')}")
            # 回复消息给macOS
            conn.sendall(b"消息已收到!来自树莓派的回复")

步骤2:macOS上运行客户端代码

打开macOS的Python编辑器,输入以下代码(替换树莓派IP)并运行:

import socket

# 替换成你的树莓派局域网IP
HOST = '192.168.1.100'
PORT = 65432

# 连接树莓派服务端
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    # 发送消息给树莓派
    s.sendall(b"你好!来自macOS的测试消息")
    # 接收树莓派的回复
    data = s.recv(1024)

print(f"收到树莓派回复:{data.decode('utf-8')}")

注意事项

  • 确保树莓派和macOS连接在同一个局域网(比如同一WiFi)
  • 如果连接失败,检查树莓派的防火墙:可以临时关闭防火墙sudo ufw disable,或者开放指定端口sudo ufw allow 65432

常见问题排查

  1. SSH连接失败:
    • 用macOS终端ping树莓派IP,看是否能通:ping 192.168.1.100
    • 确认树莓派的SSH功能确实开启
    • 检查路由器是否开启了设备隔离功能,导致无法互相访问
  2. 套接字连接失败:
    • 确保树莓派的服务端代码先启动
    • 检查端口是否被占用:树莓派终端输入sudo lsof -i :65432,如果有进程占用,换个端口即可

内容的提问来源于stack exchange,提问作者Gabor Soter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:13:00