当前位置: 首页 > news >正文

本地部署离线翻译(LibreTranslate)

步骤 1:准备环境

条件准备:python3、pip、Git

检查当前版本

python3 --version#如果没有就安装(Ubuntu/CentOS 根据自己系统安装)
#Ubuntu / Debian 安装:
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install -y python3.10 python3.10-venv python3.10-dev python3-pip#CentOS / Rocky / RHEL 安装:
sudo yum install -y gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
sudo tar xzf Python-3.10.14.tgz
cd Python-3.10.14
sudo ./configure --enable-optimizations
sudo make altinstall#安装完成执行
python3.10 --version

步骤 2:克隆 LibreTranslate 源码

git clone https://github.com/LibreTranslate/LibreTranslate.git
cd LibreTranslate

步骤 3:创建虚拟环境:

python3 -m venv venv
source venv/bin/activate
pip install -e . --no-cache-dir

步骤 4:安装语言模型

python3 scripts/install_models.py --load_only_lang_codes zh,en

步骤 5:创建启动脚本 保存为 libretranslate_start.sh,并加执行权限 chmod +x libretranslate_start.sh

#!/bin/bashPORT=5000
TRANSLATE_DIR="/mnt/data/translate/LibreTranslate"
VENV_DIR="$TRANSLATE_DIR/venv"
LOG_FILE="$TRANSLATE_DIR/server.log"# 1. 检查端口是否已被占用
PID=$(lsof -ti tcp:$PORT)if [ -n "$PID" ]; thenecho "Port $PORT is in use (PID: $PID). Stopping existing process..."kill -9 $PIDsleep 2
fi# 2. 激活虚拟环境
source "$VENV_DIR/bin/activate"# 3. 启动 LibreTranslate 后台服务(使用 gunicorn)
cd "$TRANSLATE_DIR"
echo "Starting LibreTranslate on port $PORT..."
nohup gunicorn -c scripts/gunicorn_conf.py main:app > "$LOG_FILE" 2>&1 &
echo "LibreTranslate started. Logs at: $LOG_FILE"

ps:可能启动会遇到一些问题

1.nohup: failed to run command 'gunicorn': No such file or directory

解决方案:安装 gunicorn 到虚拟环境中:

source /mnt/data/translate/LibreTranslate/venv/bin/activate    #根据自己安装目录更改目录
pip install gunicorn

2.Worker (pid:1576427) exited with code 4 [2025-05-27 08:13:00 +0000] [1576422] [ERROR] Shutting down: Master [2025-05-27 08:13:00 +0000] [1576422] [ERROR] Reason: App failed to load.

进入安装目录添加类wsgi.py

from libretranslate.main import get_args
from libretranslate.app import create_appargs = get_args()
app = create_app(args)

3.出现监听的端口是8080,而不是5000

修改配置文件 scripts/gunicorn_conf.py

#在import下方bind端口
bind = "0.0.0.0:5000"

使用启动命令

 nohup gunicorn -c scripts/gunicorn_conf.py wsgi:app > server.log 2>&1 &

最后接口测试:

 curl -X POST http://localhost:5000/translate \
     -H "Content-Type: application/json" \
     -d '{"q": "你好,世界", "source": "zh", "target": "en"}'
{"translatedText":"Hello, world"}
 

http://www.xdnf.cn/news/676243.html

相关文章:

  • 锂电电动扭剪扳手市场报告:现状、趋势与竞争格局深度解析
  • 关于老项目编译问题的处理
  • day022-定时任务-故障案例与发送邮件
  • 字节跳动推出开源多模态模型 BAGEL 从图像生成到世界建模
  • java上机测试错题回顾(2)
  • 万象生鲜配送系统 2025-05-23 更新日志
  • 使用新一代达梦管理工具SQLark,高效处理 JSON/XML 数据!
  • 多元一次不定方程
  • NGINX HTTP/2 全面指南开启、调优与实战
  • HTML常见事件详解:从入门到实战应用
  • OpenHarmony定制系统组合按键(一)
  • springBoot项目测试时浏览器返回406问题解决方案
  • iOS QQ抽屉式导航的实现
  • NIFI的性能调优
  • FilterAnalysis -滤波器分析
  • 用nz-tabel写一个合并表格
  • 利用机器学习优化数据中心能效
  • 深度学习实战109-智能医疗随访与健康管理系统:基于Qwen3(32B)、LangChain框架、MCP协议和RAG技术研发
  • 复杂度拆解
  • 程序环境与预处理
  • Cesium添加点、线、面
  • TF 卡 U1 和 U3 有什么区别?一文解析关键差异
  • SQL语句内容处理——给每行内容都添加单引号和逗号
  • 理解vue-cli 中进行构建优化
  • 【Elasticsearch】`_refresh`和`_flush`的区别
  • vue3+vite+amfe-flexible+postcss-pxtorem 实现全分辨率自适应
  • AI工具的选择:Dify还是传统工具?
  • 【C++】封装哈希表实现 unordered_map、unordered_set
  • 【Harmony OS】组件自定义属性、事件和状态管理
  • 【Webtrees 手册】第 9 章 - 开发指南