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验证。
为避免项目间依赖冲突,建议使用venv创建虚拟环境:
# 创建虚拟环境(如命名为myenv)
python3 -m venv myenv
# 激活虚拟环境
source myenv/bin/activate
# 停用虚拟环境(使用时输入deactivate)
激活后,所有通过pip install安装的库将仅存在于当前虚拟环境中。
根据需求选择合适的网络库,以下是常见库的安装方法:
requests库(同步请求,简单易用)pip3 install requests
aiohttp库(支持异步IO,高性能)pip3 install aiohttp
paramiko库(实现SSH2协议,用于远程操作)pip3 install paramiko
socket库(Python内置,用于底层网络通信,如TCP/UDP)。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
注意:生产环境中需根据实际需求调整端口开放策略,避免过度暴露。
若需设置静态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)。
创建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状态码及网页片段内容。
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()
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()
测试方法:
python3 server.pypython3 client.pyparamiko等依赖系统库的包时出现错误,需先安装系统依赖(如sudo apt install libssl-dev libffi-dev python3-dev)。sudo lsof -i :8080查看占用进程,或更换端口。sudo ufw allow 8080/tcp)。