如何在离线情况下部署项目(前端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
相关推荐
qq_417695051 小时前
机器学习与人工智能
jvm·数据库·python
漫随流水1 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
yy我不解释2 小时前
关于comfyui的mmaudio音频生成插件时时间不一致问题(一)
python·ai作画·音视频·comfyui
踩着两条虫2 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
紫丁香3 小时前
AutoGen详解一
后端·python·flask
FreakStudio3 小时前
不用费劲编译ulab了!纯Mpy矩阵micronumpy库,单片机直接跑
python·嵌入式·边缘计算·电子diy
jzlhll1233 小时前
kotlin Flow first() last()总结
开发语言·前端·kotlin
蓝冰凌4 小时前
Vue 3 中 defineExpose 的行为【defineExpose暴露ref变量】详解:自动解包、响应性与实际使用
前端·javascript·vue.js
奔跑的呱呱牛4 小时前
generate-route-vue基于文件系统的 Vue Router 动态路由生成工具
前端·javascript·vue.js