如何在离线情况下部署项目(前端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
相关推荐
Warson_L1 小时前
高性能架构设计
python·go
databook2 小时前
新数据到手,先跑哪几步检查
python·数据分析
czq_26867194872 小时前
Python打卡第46天
开发语言·python
卸任2 小时前
Vibe coding工具使用心得
前端·ai编程
brien93 小时前
为什么模型标称 1M,Google Antigravity 聊到 256K 却突然失忆?我们给它做了个原生行内监控圆环
前端
修炼的dance3 小时前
录屏关键帧间隔多少合适?六档实测,2秒到10秒小了75.6%
前端
Lank_M3 小时前
关键帧从1秒拉到10秒,录屏小87.3%,摄像头小10.8%
前端
补码缩写3 小时前
用 ffprobe 拆录屏,八成字节在 29 个关键帧上
前端
百思不得小李3 小时前
一个复杂的动态表单是如何实现的
前端·设计模式
Flynt4 小时前
日涨4000星的OSINT工具,我拿Linus的用户名和一个随机字符串实测了一遍
python·安全