跳到主要内容Python 在 CentOS 系统上的安装与配置深度指南 | 极客日志Python
Python 在 CentOS 系统上的安装与配置深度指南
详细讲解了在 CentOS 系统上安装和配置 Python 环境的完整流程。内容包括解决系统自带 Python 版本过旧的问题,通过源码编译安装 Python 3 并处理 SSL 模块依赖。此外还涵盖了 pip 包管理器的使用、虚拟环境的创建与管理、模块导入路径的配置以及文件系统权限和 SELinux 安全设置。最后介绍了生产环境下的 WSGI 部署、性能优化及监控策略,确保 Python 应用在 CentOS 服务器上稳定高效运行。
指针猎手0 浏览 Python 在 CentOS 系统上的安装和配置是许多开发者和系统管理员遇到的第一个挑战。由于 CentOS 默认搭载较旧版本的 Python(通常是 Python 2.7),而现代开发大多使用 Python 3.x,这使得正确安装和配置 Python 环境变得至关重要。
1.1 系统自带 Python 的限制
CentOS 通常预装 Python 2.7,这个版本已在 2020 年停止官方支持。许多系统工具(如 yum)仍然依赖这个特定版本,因此不建议直接删除系统自带的 Python 2.7,否则可能导致系统管理工具失灵。这种依赖关系设计是为了确保系统组件的稳定性,但给开发者带来了需要管理多个 Python 版本的挑战。
尝试移除系统自带 Python 可能会导致以下问题:
- 包管理器 yum 无法正常工作
- 系统监控工具和脚本失效
- 可能需要重装操作系统才能恢复完整功能
1.2 安装 Python 3 的常见问题及解决方案
在 CentOS 上安装 Python 3 时,最常遇到的是依赖缺失问题。以下是安装前必须安装的开发工具和依赖包:
sudo yum groupinstall "Development Tools" -y
sudo yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel sqlite-devel readline-devel tk-devel -y
- 缺少
zlib 导致无法安装 pip 模块
- 缺少
openssl-devel 导致 SSL 模块不可用
- 缺少
libffi-devel 导致 cffi 等扩展无法编译
| 依赖包 | 主要功能 | 缺失时的影响 |
|---|
| openssl-devel | 提供 SSL/TLS 加密功能 | 无法使用 https 连接、ssl 模块导入失败 |
| zlib-devel | 提供数据压缩功能 | 无法处理压缩文件、pip 安装失败 |
| libffi-devel | 提供外部函数接口支持 | cffi 扩展无法编译、某些 C 扩展失败 |
| sqlite-devel | 提供 SQLite 数据库支持 | 无法使用 sqlite3 模块、Django 开发服务器问题 |
从源码编译安装 Python 3 是最推荐的方法,因为它提供了最大的灵活性和控制权:
wget https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tgz
tar -xf Python-3.12.2.tgz
cd Python-3.12.2
./configure --enable-optimizations --with-openssl=$(which openssl)
make -j $(nproc)
sudo make altinstall
使用 altinstall 而不是 install 非常重要,因为它会防止覆盖系统默认的 Python 二进制文件。完成安装后,应该使用 python3.12 命令来明确使用新安装的版本。
1.3 SSL 模块问题解决方案
SSL 模块问题是 CentOS 上安装 Python 时最常见的问题之一。如果安装时缺少 openssl-devel 依赖,或者 OpenSSL 版本太旧,可能会导致以下错误:
解决方案是重新编译 Python 并确保正确配置 SSL 支持:
sudo yum install openssl openssl-devel
make clean
./configure --enable-optimizations --with-openssl=$(which openssl)
make -j $(nproc)
sudo make altinstall
1.4 环境变量配置与管理
正确配置环境变量是确保 Python 正常工作的关键环节。安装完成后,需要将新安装的 Python 路径添加到 PATH 环境变量中:
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
echo 'export PYTHON_HOME=/usr/local/bin/python3.12' >> ~/.bashrc
source ~/.bashrc
python3.12 --version
pip3.12 --version
python3.12 -c "import ssl; print(ssl.OPENSSL_VERSION)"
如果系统中有多个 Python 版本,可以使用 alternatives 工具来管理默认版本:
sudo alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.12 1
sudo alternatives --config python3
1.5 软件集合(SCL)替代方案
对于 CentOS 7 用户,Software Collections(SCL)提供了一个有趣的替代方案。SCL 允许安装和使用多个 Python 版本而不会影响系统自带的 Python:
sudo yum install centos-release-scl
sudo yum install rh-python38
scl enable rh-python38 bash
echo "source scl_source enable rh-python38" >> ~/.bashrc
这种方法特别适合需要在不同项目中使用不同 Python 版本的开发者,但需要注意的是,SCL 环境默认不是永久激活的,需要在每个会话中显式激活或添加到 bash 配置文件中。
通过正确安装和配置 Python 环境,可以为后续的开发工作打下坚实基础。接下来,我们将探讨包管理和虚拟环境的相关问题和解决方案。
2 包管理与虚拟环境问题
在 CentOS 上使用 Python 进行开发时,合理的包管理和虚拟环境使用是保证项目稳定性和可维护性的关键。由于 CentOS 的权限管理和默认 Python 版本较旧等特点,这方面经常会遇到各种挑战。
2.1 pip 包管理器问题与解决方案
pip 是 Python 包管理的事实标准,但在 CentOS 上使用 pip 经常会遇到权限问题和依赖冲突。
权限问题是 pip 使用中最常见的挑战之一。在 CentOS 上,直接使用 pip 安装包到系统目录通常需要 root 权限:
sudo pip3.12 install package_name
然而,以 root 权限直接安装 Python 包存在安全风险,并且可能导致系统 Python 环境被污染。推荐的做法是使用用户级安装:
pip3.12 install --user package_name
这样包会被安装到 ~/.local/lib/python3.12/site-packages/ 目录,不需要提升权限,也不会影响系统其他用户。
依赖冲突是另一个常见问题。不同项目可能需要同一包的不同版本,这种冲突在系统级别很难解决。例如:
镜像源配置对于国内用户特别重要。默认的 Py 源可能由于网络问题访问缓慢或不稳定。可以配置国内镜像源加速下载:
pip3.12 install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name
pip3.12 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
2.2 虚拟环境的最佳实践
虚拟环境是解决 Python 项目依赖隔离问题的标准方案,在 CentOS 上使用虚拟环境有一些特别需要注意的地方。
创建虚拟环境有多种方法,最常用的是 venv 模块(Python 3.3+ 自带):
python3.12 -m venv my_project_env
source my_project_env/bin/activate
pip install django
对于较早的 Python 版本,需要先安装 virtualenv 工具:
sudo pip3.12 install virtualenv
virtualenv my_project_env
虚拟环境的工作原理是通过修改 PATH 环境变量,将虚拟环境的 bin 目录放在系统路径之前,并设置一个特殊的 Python 路径。激活后,终端提示符通常会显示环境名称:
(my_project_env)[user@centos ~]$
管理环境需求是虚拟环境的重要优势。可以使用 requirements 文件精确记录项目依赖:
pip freeze > requirements.txt
pip install -r requirements.txt
Django==3.2.12
psycopg2-binary==2.9.3
celery==5.2.7
2.3 依赖兼容性问题解决
在 CentOS 上,由于系统自带的库版本可能较旧,有时会遇到 Python 包与系统库的兼容性问题。常见的解决方案包括:
从源码编译:有时需要从源码编译 Python 包以确保与系统兼容
pip install --no-binary :all: package_name
使用较旧的 Python 包版本:某些最新版的 Python 包可能需要更新的系统库,这时可以安装稍旧但兼容的版本
pip install package_name==1.2.3
2.4 虚拟环境目录结构理解
了解虚拟环境的目录结构有助于更好地管理和调试环境问题。一个典型的虚拟环境包含以下结构:
my_project_env/
├── bin/
│ ├── activate
│ ├── activate.csh
│ ├── activate.fish
│ ├── python -> python3.12
│ └── pip -> pip3.12
├── lib/
│ └── python3.12/
│ └── site-packages/
└── pyvenv.cfg
pyvenv.cfg 文件包含了虚拟环境的配置信息,如:
home = /usr/local/bin
include-system-site-packages = false
version = 3.12.2
通过合理使用虚拟环境和正确的包管理策略,可以在 CentOS 上创建稳定、可重现的 Python 开发环境,有效避免不同项目间的依赖冲突。接下来,我们将探讨模块导入和路径问题的解决方案。
3 模块导入与路径问题
Python 模块导入机制和路径管理是 CentOS 环境下常见的痛点之一。由于 CentOS 的特殊目录结构和权限管理方式,开发者经常会遇到模块找不到的问题,尤其是使用自定义安装的 Python 版本时。
3.1 Python 模块搜索路径机制
Python 解释器在导入模块时遵循一个明确的搜索路径顺序。了解这个顺序对调试模块导入问题至关重要。可以通过以下代码查看当前 Python 解释器的搜索路径:
import sys
print(sys.path)
- 当前脚本所在目录
- PYTHONPATH 环境变量指定的目录
- Python 标准库目录
- 站点包目录(site-packages)
- .pth 文件中指定的路径
在 CentOS 上,使用自定义编译安装的 Python 时,站点包目录通常是 /usr/local/lib/python3.12/site-packages/,而系统自带的 Python 2.7 的站点包目录是 /usr/lib/python2.7/site-packages/。
3.2 常见模块导入错误与解决
ModuleNotFoundError 是最常见的导入错误,通常有以下几种原因和解决方案:
模块名称大小写问题:Python 是大小写敏感的语言,确保导入语句与模块实际名称大小写一致
import requests
import Requests
模块安装在错误的 Python 环境中:确保模块安装在与运行环境相同的 Python 环境中
which python
which pip
pip install target_module
模块未安装:最简单的解决方案是使用 pip 安装所需模块
pip install missing_module
ImportError 是另一类常见的导入错误,通常表明模块已存在但依赖有问题:
chmod o+r /path/to/module.py
缺少共享库:某些包含 C 扩展的模块可能依赖系统共享库
sudo yum install openssl-devel
3.3 路径配置最佳实践
合理配置 Python 路径可以避免大多数模块导入问题。以下是几种有效的路径管理方法:
使用 PYTHONPATH 环境变量:临时或永久添加自定义路径到 Python 搜索路径中
export PYTHONPATH="/path/to/my/modules:$PYTHONPATH"
echo 'export PYTHONPATH="/path/to/my/modules:$PYTHONPATH"' >> ~/.bashrc
source ~/.bashrc
使用.pth 文件:在站点包目录中添加.pth 文件,可以批量添加路径
echo "/path/to/my/modules" >> /usr/local/lib/python3.12/site-packages/mypaths.pth
配置开发环境的路径:对于开发项目,最好使用可编辑模式安装
3.4 特殊模块问题处理
某些特定的模块在 CentOS 上可能需要额外处理:
_ssl 模块问题:如前所述,SSL 模块问题很常见。解决方案是确保安装了 openssl-devel 并重新编译 Python
_sqlite3 模块问题:如果遇到 sqlite3 模块问题,需要安装 sqlite-devel
sudo yum install sqlite-devel
cd Python-3.12.2
./configure --enable-optimizations
make -j $(nproc)
sudo make altinstall
_ctypes 问题:ctypes 模块依赖 libffi-devel
sudo yum install libffi-devel
3.5 调试模块导入问题
当遇到难以解决的模块导入问题时,可以采取以下调试方法:
python -c "import problem_module; print('成功导入')"
pip show installed_module
find / -name "problem_module.py" 2>/dev/null
详细模式运行 Python:使用 -v 参数查看导入过程的详细信息
python -v -c "import problem_module"
通过理解 Python 模块导入机制和掌握这些调试技巧,可以解决大多数在 CentOS 上遇到的模块导入问题。接下来,我们将探讨权限和安全性相关的问题。
4 权限与安全性问题
在 CentOS 上运行 Python 应用时,权限管理和安全性配置是至关重要的考虑因素。由于 CentOS 通常用于服务器环境,且以其稳定性与安全性著称,不正确的权限配置可能导致应用运行失败或引入安全风险。
4.1 文件系统权限管理
CentOS 继承了 Linux 严格的文件权限机制,Python 应用需要适当的权限才能正常运行。以下是常见的权限问题及解决方案:
项目文件权限:Python 脚本和相关文件需要正确的读取权限
chmod 640 *.py
chmod 750 main_script.py
sudo mkdir /var/lib/myapp
sudo chown myapp:myapp /var/lib/myapp
sudo chmod 755 /var/lib/myapp
临时文件处理:使用 Python 的 tempfile 模块安全地处理临时文件
import tempfile
import os
with tempfile.NamedTemporaryFile(delete=False) as tmp:
tmp.write(b"临时数据")
temp_path = tmp.name
os.unlink(temp_path)
4.2 用户与组权限管理
以适当用户身份运行 Python 应用是 CentOS 安全最佳实践的重要组成部分:
创建专用用户:为每个 Python 应用创建专用系统用户
sudo adduser --system --no-create-home myappuser
sudo groupadd myappgroup
sudo usermod -a -G myappgroup myappuser
以非 root 用户运行:永远不要以 root 身份运行 Python 应用,除非绝对必要
sudo -u myappuser python /path/to/myapp.py
4.3 SELinux 相关问题解决
Security-Enhanced Linux (SELinux) 是 CentOS 的核心安全功能,但有时会阻止 Python 应用正常运作:
SELinux 基本命令:管理 SELinux 策略和上下文
sestatus
setenforce 0
setenforce 1
调整 SELinux 策略:为 Python 应用配置适当的 SELinux 策略
sudo ausearch -m avc -ts recent
sudo chcon -t httpd_sys_content_t /path/to/myapp.py
sudo setsebool -P httpd_can_network_connect 1
使用审计日志:分析 SELinux 拒绝事件并相应调整策略
sudo cat /var/log/audit/audit.log | grep AVC
4.4 防火墙与网络权限
CentOS 防火墙可能阻止 Python 应用的网络访问,特别是 Web 应用或需要访问外部 API 的应用:
管理 firewalld:CentOS 7+ 默认使用 firewalld 管理防火墙规则
sudo firewall-cmd --list-all
sudo firewall-cmd --permanent --add-port=5000/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
4.5 安全模块与密码管理
安全地处理敏感信息如密码、API 密钥是 Python 应用的重要考虑因素:
import os
db_password = os.environ.get('DB_PASSWORD', 'default_password')
api_key = os.environ.get('API_KEY')
sudo yum install pass
pass init "My GPG Key"
chmod 600 config.ini
chown myappuser:myappgroup config.ini
4.6 安全最佳实践总结
在 CentOS 上运行 Python 应用时,应遵循以下安全最佳实践:
- 最小权限原则:应用应仅拥有完成其功能所必需的最小权限
- 定期更新:保持系统和 Python 包更新到最新安全版本
- 日志监控:监控应用和系统日志以检测可疑活动
- 备份策略:定期备份应用数据和配置
- 网络隔离:将应用部署在适当的网络区域,使用防火墙限制访问
- 安全扫描:定期进行安全扫描和漏洞评估
通过遵循这些权限管理和安全性实践,可以确保 Python 应用在 CentOS 上既安全又稳定地运行。接下来,我们将探讨系统工具兼容性问题。
5 系统工具兼容性问题
在 CentOS 上使用 Python 时,一个特别棘手的问题是如何处理与系统工具的兼容性。由于许多系统工具(如 yum、dnf 等)本身依赖特定版本的 Python,不当的 Python 环境修改可能导致系统管理功能受损。
5.1 系统工具与 Python 版本的依赖关系
CentOS 的系统工具通常依赖于系统自带的 Python 2.7 或较旧的 Python 3 版本。了解这些依赖关系至关重要:
yum 与 Python 2.7:在 CentOS 7 上,yum 包管理器依赖 Python 2.7。修改系统默认的 Python 解释器可能导致 yum 无法正常工作。
dnf 与 Python 3:在 CentOS 8 及以上版本中,dnf 包管理器依赖 Python 3.6。同样,修改系统 Python 3 版本可能导致包管理问题。
其他系统工具:许多其他系统工具和脚本(如系统监控脚本、日志轮替工具等)也可能依赖特定版本的 Python 或 Python 模块。
5.2 避免破坏系统工具的方法
保持系统工具正常运行的同时使用新版本 Python 需要谨慎操作:
不要删除系统 Python:无论安装什么版本的 Python,都不要删除系统自带的 Python 2.7 或 Python 3.6。
不要更改系统 Python 符号链接:避免更改 /usr/bin/python、/usr/bin/python2 或 /usr/bin/python3 这些符号链接,它们被系统工具使用。
使用替代名称安装:从源码编译安装 Python 时,使用 make altinstall 而不是 make install,这可以防止覆盖系统 Python 二进制文件。
cd Python-3.12.2
./configure --enable-optimizations
make -j $(nproc)
sudo make altinstall
5.3 修复已损坏的系统工具
如果不慎破坏了系统工具的 Python 依赖,可以采取以下修复措施:
修复 yum 配置:如果 yum 因 Python 问题停止工作,可以显式指定 Python 解释器
重新安装系统 Python 包:如果系统 Python 文件被损坏,可以重新安装相关包
sudo yum reinstall python python2 yum
sudo dnf reinstall python3 dnf
5.4 使用虚拟环境隔离系统 Python
为系统工具创建专用的虚拟环境可以避免与应用 Python 环境冲突:
创建系统工具虚拟环境:虽然不常见,但在某些情况下可能有用
sudo python2.7 -m virtualenv /opt/system_tools_venv
sudo /opt/system_tools_venv/bin/pip install some_package
5.5 兼容性检查与测试
在修改系统 Python 环境前,应进行兼容性检查和测试:
测试脚本兼容性:使用 python -m py_compile 测试脚本与 Python 版本的兼容性
python3.12 -m py_compile my_script.py
使用 tox 进行多版本测试:tox 工具可以帮助测试代码在不同 Python 版本上的兼容性
5.6 容器化方案
对于复杂的兼容性需求,考虑使用容器化技术完全隔离应用环境:
使用 Docker 容器:将 Python 应用及其所有依赖打包到容器中
# Dockerfile 示例
FROM centos:7
# 安装 Python 3.12
RUN yum install -y gcc openssl-devel bzip2-devel libffi-devel && \
curl -O https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tgz && \
tar xzf Python-3.12.2.tgz && \
cd Python-3.12.2 && \
./configure --enable-optimizations && \
make altinstall && \
cd .. && \
rm -rf Python-3.12.2*
# 设置工作目录
WORKDIR /app
# 复制应用代码
COPY . .
# 安装应用依赖
RUN python3.12 -m pip install -r requirements.txt
# 运行应用
CMD ["python3.12", "app.py"]
使用 Podman:CentOS 8+ 推荐的无守护进程容器解决方案
sudo dnf install podman
podman run -it python:3.12 /bin/bash
通过理解系统工具与 Python 版本的依赖关系,并采取适当的隔离措施,可以在 CentOS 上同时保持系统稳定性和应用现代化。接下来,我们将探讨高级部署与优化策略。
6 高级部署与优化
将 Python 应用部署到 CentOS 生产环境需要考虑性能、可靠性和可维护性。本节将探讨高级部署策略、性能优化技巧以及监控维护方法,确保应用在生产环境中高效稳定运行。
6.1 生产环境部署策略
使用 WSGI 服务器:替代 Flask/Django 开发服务器,使用生产级 WSGI 服务器
pip install gunicorn
gunicorn --bind 0.0.0.0:5000 --workers 4 app:app
配置 Nginx 反向代理:使用 Nginx 作为前端代理处理静态文件和负载均衡
# /etc/nginx/conf.d/pythonapp.conf
server {
listen 80;
server_name your_domain.com;
# 静态文件处理
location /static {
alias /path/to/your/static/files;
expires 30d;
}
# 动态请求转发到 Gunicorn
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
配置 Systemd 服务:使用 Systemd 管理 Python 应用进程
[Unit]
Description=Python Web Application
After=network.target
[Service]
User=myappuser
Group=myappgroup
WorkingDirectory=/opt/myapp
Environment="PATH=/opt/myapp/venv/bin"
Environment="DATABASE_URL=postgresql://user:pass@localhost/dbname"
ExecStart=/opt/myapp/venv/bin/gunicorn --workers 4 --bind 0.0.0.0:5000 app:app
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable pythonapp
sudo systemctl start pythonapp
sudo systemctl status pythonapp
sudo journalctl -u pythonapp -f
6.2 性能优化技巧
优化 Gunicorn 配置:根据系统资源调整 Gunicorn 参数
workers = (2 * cpu_count()) + 1
worker_class = "gevent"
worker_connections = 1000
timeout = 120
keepalive = 5
max_requests = 1000
max_requests_jitter = 100
preload_app = True
from psycopg2 import pool
connection_pool = pool.SimpleConnectionPool(
1, 20,
host="localhost",
database="mydb",
user="user",
password="password"
)
import redis
from functools import wraps
redis_client = redis.Redis(host='localhost', port=6379, db=0)
def cache_result(expire_time=300):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
cache_key = f"{func.__name__}:{str(args)}:{str(kwargs)}"
cached_result = redis_client.get(cache_key)
if cached_result:
return cached_result.decode()
result = func(*args, **kwargs)
redis_client.setex(cache_key, expire_time, result)
return result
return wrapper
return decorator
6.3 监控与日志管理
应用性能监控:使用 Prometheus 和 Grafana 监控应用指标
pip install prometheus-client
from prometheus_client import start_http_server, Counter
REQUEST_COUNT = Counter('app_requests_total', 'Total app requests')
@app.route('/')
def index():
REQUEST_COUNT.inc()
return "Hello World"
import json
import logging
from datetime import datetime
class StructuredLogger:
def __init__(self, name):
self.logger = logging.getLogger(name)
def log_request(self, request, response, time_taken):
log_data = {
"timestamp": datetime.utcnow().isoformat(),
"level": "INFO",
"method": request.method,
"path": request.path,
"status": response.status_code,
"time_taken_ms": round(time_taken * 1000, 2),
"user_agent": request.headers.get('User-Agent'),
"ip": request.remote_addr
}
self.logger.info(json.dumps(log_data))
日志轮替配置:使用 logrotate 管理应用日志
/var/log/pythonapp/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 644 myappuser myappgroup
postrotate
systemctl reload pythonapp > /dev/null 2>&1 || true
endscript
}
6.4 安全加固
sudo chown -R myappuser:myappgroup /opt/myapp
sudo find /opt/myapp -type d -exec chmod 750 {} \;
sudo find /opt/myapp -type f -exec chmod 640 {} \;
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo yum install -y yum-cron
sudo systemctl enable yum-cron
sudo systemctl start yum-cron
sudo yum install -y openscap-scanner oscap
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_stig \
--results scan_results.xml \
--report scan_report.html \
/usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
通过实施这些高级部署和优化策略,可以显著提升 Python 应用在 CentOS 上的性能、可靠性和安全性。正确的生产环境配置不仅提高了应用性能,还简化了维护和故障排除过程。
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown 转 HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
- HTML 转 Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online