如何在离线情况下部署项目(前端VUE + 后端Python)

文章目录

      • [如何在离线情况下部署项目(前端VUE + 后端Python)](#如何在离线情况下部署项目(前端VUE + 后端Python))

如何在离线情况下部署项目(前端VUE + 后端Python)

虚拟环境离线迁移
  • 生成requirements.txt文件,获取当前项目的所有安装包的名称及内容
python 复制代码
uv pip freeze > requirements.txt
  • 使用如下命令,将wheel包(离线安装包)下载至packages文件夹。
python 复制代码
pip download -r requirements.txt -d packages


# 同时下载基本的构建工具
# pip download setuptools wheel cython --only-binary=:all: --python-version 3.12 -d packages
# 如果中间有遇到下载下来的包.tar.gz,需要用下面的命令先打包成whl包
import glob
import subprocess
import sys


def build_wheel_with_pip(tar_gz_file, wheel_dir):
    """使用 pip 构建 wheel"""
    try:
        # 使用 pip wheel 命令直接构建 wheel
        result = subprocess.run([
            sys.executable, "-m", "pip", "wheel",
            tar_gz_file,
            "-w", wheel_dir,
            "--no-deps"  # 不处理依赖关系
        ], capture_output=True, text=True)

        if result.returncode == 0:
            print(f"成功构建: {tar_gz_file}")
            print(f"输出: {result.stdout}")
            return True
        else:
            print(f"构建失败: {tar_gz_file}")
            print(f"错误信息: {result.stderr}")
            return False

    except Exception as e:
        print(f"处理失败: {tar_gz_file} - 错误: {e}")
        return False


def build_wheels_from_tar_gz():
    # 查找所有 tar.gz 文件
    tar_gz_files = glob.glob("packages/*.tar.gz")
    
    if not tar_gz_files:
        print("未找到 .tar.gz 文件")
        return

    print(f"找到 {len(tar_gz_files)} 个 .tar.gz 文件:")
    for file in tar_gz_files:
        print(f"  - {file}")

    wheel_dir = "packages"

    # 为每个 tar.gz 文件构建 wheel
    success_count = 0
    for tar_gz_file in tar_gz_files:
        print(f"\n正在处理: {tar_gz_file}")
        if build_wheel_with_pip(tar_gz_file, wheel_dir):
            success_count += 1
        else:
            print(f"构建失败: {tar_gz_file}")

    print(f"\n总共处理 {len(tar_gz_files)} 个文件,成功 {success_count} 个")


if __name__ == "__main__":
    build_wheels_from_tar_gz()
  • 在离线服务器安装python(python版本一定要与开发虚拟环境一致)
python 复制代码
py -3.12 -m venv .venv # py -python版本 venv 虚拟环境名称
  • 激活python虚拟环境
python 复制代码
# Windows系统下
.venv\Scripts\Active # 回车
  • 离线安装所有依赖
python 复制代码
pip install --no-index --find-links=packages -r requirements.txt  
  • 离线服务器导入数据库数据
python 复制代码
# 准备好.sql文件
# 离线服务器登录mysql

# SHOW DATABASES; 
# CREATE DATABASE db1 CHARACTER SET utf8mb4;
# USE db1;                     

# SHOW TABLES;
# SOURCE D:\xujiamiao\AT168_QS_MV_safety_Check\flux-backend\test\boms\s.sql; # 导入数据库数据  
  • 离线服务器准备好redis
python 复制代码
# Windows系统
# 如果redistribution报Authentication required,就需要删除对应conf文件中的requirepass字段或者代码里面加上对应的password
# 如果是把redis注册成Windows服务,那么redis读取的文件就是redis.windows-service.conf
# 如果是直接启动的,那么redis读取的文件 就是redis.windows.conf
相关推荐
Csvn1 天前
🌟 LangChain 30 天保姆级教程 · Day 13|OutputParser 进阶!让 AI 输出自动转为结构化对象,并支持自动重试!
python·langchain
于慨1 天前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz1 天前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
从前慢丶1 天前
前端交互规范(Web 端)
前端
像我这样帅的人丶你还1 天前
别再让JS耽误你进步了。
css·vue.js
@yanyu6661 天前
07-引入element布局及spring boot完善后端
javascript·vue.js·spring boot
CHU7290351 天前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序
GISer_Jing1 天前
Page-agent MCP结构
前端·人工智能
王霸天1 天前
💥别再抄网上的Scale缩放代码了!50行源码教你写一个永不翻车的大屏适配
前端·vue.js·数据可视化
小领航1 天前
用 Three.js + Vue 3 打造炫酷的 3D 行政地图可视化组件
前端·github