首页主机资讯如何配置Ubuntu上的Python网络库

如何配置Ubuntu上的Python网络库

时间2025-10-31 19:07:03发布访客分类主机资讯浏览788
导读:一、基础环境准备 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
如何排查ubuntu上php-fpm的故障 ubuntu下php-fpm如何限制请求速率

游客 回复需填写必要信息