如何配置Ubuntu上的Python网络库
导读:一、基础环境准备 1. 安装Python与pip Ubuntu系统通常预装Python 3,可通过python3 --version验证版本(建议使用Python 3.6及以上)。若未安装或需更新,执行以下命令: sudo apt upda...
一、基础环境准备
1. 安装Python与pip
Ubuntu系统通常预装Python 3,可通过python3 --version验证版本(建议使用Python 3.6及以上)。若未安装或需更新,执行以下命令:
sudo apt update
sudo apt install python3 python3-pip
pip是Python包管理工具,安装Python 3时会自动安装python3-pip,可通过pip3 --version验证。
2. 配置虚拟环境(可选但推荐)
为避免项目间依赖冲突,建议使用venv创建虚拟环境:
# 创建虚拟环境(如命名为myenv)
python3 -m venv myenv
# 激活虚拟环境
source myenv/bin/activate
# 停用虚拟环境(使用时输入deactivate)
激活后,所有通过pip install安装的库将仅存在于当前虚拟环境中。
二、安装常用Python网络库
根据需求选择合适的网络库,以下是常见库的安装方法:
- 基础HTTP请求:requests库(同步请求,简单易用)pip3 install requests
- 异步HTTP请求:aiohttp库(支持异步IO,高性能)pip3 install aiohttp
- SSH连接:paramiko库(实现SSH2协议,用于远程操作)pip3 install paramiko
- 标准库补充:socket库(Python内置,用于底层网络通信,如TCP/UDP)。
三、网络配置与安全设置
1. 配置防火墙(UFW)
Ubuntu默认使用ufw(Uncomplicated Firewall)管理防火墙,需允许常用网络端口:
# 允许SSH(22端口,远程登录)
sudo ufw allow 22/tcp
# 允许HTTP(80端口,网页服务)
sudo ufw allow 80/tcp
# 允许HTTPS(443端口,加密网页服务)
sudo ufw allow 443/tcp
# 启用防火墙
sudo ufw enable
# 查看防火墙状态
sudo ufw status
注意:生产环境中需根据实际需求调整端口开放策略,避免过度暴露。
2. 配置网络接口(静态IP/自定义设置)
若需设置静态IP或修改网络参数,编辑Netplan配置文件(通常位于/etc/netplan/目录,如01-netcfg.yaml):
network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:  # 网卡名称(通过ip a查看)
      dhcp4: no  # 关闭DHCP(静态IP需设置为no)
      addresses:
        - 192.168.1.100/24  # 静态IP地址及子网掩码
      gateway4: 192.168.1.1  # 网关地址
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]  # DNS服务器
保存后应用配置:
sudo netplan apply
提示:修改前建议备份原配置文件(cp /etc/netplan/01-netcfg.yaml ~/01-netcfg.yaml.bak)。
四、编写与测试网络程序
1. 基础HTTP请求示例(使用requests库)
创建test_requests.py文件,内容如下:
import requests
try:
    # 发送GET请求
    response = requests.get('https://www.example.com', timeout=5)
    response.raise_for_status()  # 检查状态码(非200则抛出异常)
    print(f"Status Code: {
response.status_code}
")
    print(f"Response Content: {
response.text[:200]}
...")  # 打印前200字符
except requests.exceptions.HTTPError as errh:
    print(f"HTTP Error: {
errh}
")
except requests.exceptions.ConnectionError as errc:
    print(f"Connection Error: {
errc}
")
except requests.exceptions.Timeout as errt:
    print(f"Timeout Error: {
errt}
")
except requests.exceptions.RequestException as err:
    print(f"Other Error: {
err}
")
运行脚本:
python3 test_requests.py
若正常,将输出HTTP状态码及网页片段内容。
2. 基础Socket编程示例(TCP服务器/客户端)
- 服务器端(server.py):import socket # 创建TCP套接字 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置端口复用(避免TIME_WAIT状态导致无法重启) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) # 绑定地址与端口 server_socket.bind(('127.0.0.1', 8080)) # 开始监听(最多128个连接) server_socket.listen(128) print("Server is listening on 127.0.0.1:8080") while True: # 等待客户端连接 client_socket, client_address = server_socket.accept() print(f"Connected by { client_address} ") try: # 接收数据(最多1024字节) data = client_socket.recv(1024) if not data: break print(f"Received: { data.decode()} ") # 发送回显数据 client_socket.sendall(b"Hello from server!") finally: # 关闭客户端连接 client_socket.close()
- 客户端(client.py):import socket # 创建TCP套接字 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 client_socket.connect(('127.0.0.1', 8080)) try: # 发送数据 client_socket.sendall(b"Hello from client!") # 接收回显数据 data = client_socket.recv(1024) print(f"Received from server: { data.decode()} ") finally: # 关闭连接 client_socket.close()
测试方法:
- 终端1运行服务器:python3 server.py
- 终端2运行客户端:python3 client.py
- 客户端将输出服务器回显的“Hello from server!”,服务器端将显示客户端发送的内容。
五、常见问题排查
- 库安装失败:若安装paramiko等依赖系统库的包时出现错误,需先安装系统依赖(如sudo apt install libssl-dev libffi-dev python3-dev)。
- 端口冲突:若启动服务器时报“Address already in use”,说明端口已被占用,可通过sudo lsof -i :8080查看占用进程,或更换端口。
- 防火墙拦截:若无法从外部访问服务,需检查防火墙是否允许对应端口(如sudo ufw allow 8080/tcp)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何配置Ubuntu上的Python网络库
本文地址: https://pptw.com/jishu/740214.html
