如何在离线情况下部署项目(前端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
相关推荐
子兮曰12 分钟前
深入 HTML-in-Canvas:当 Canvas 学会了渲染 DOM,前端图形生态要变天了
前端·javascript·canvas
2301_8092047019 分钟前
mysql在docker容器中如何部署_利用docker-compose快速启动
jvm·数据库·python
ws_qy19 分钟前
从大模型原理到前端 AI Coding 工程化实践
前端·ai编程
倾颜39 分钟前
React 19 源码主线拆解 04:Fiber 到底是什么,React 为什么需要 Fiber?
前端·react.js·源码阅读
AI攻城狮44 分钟前
国产大模型能力大比拼,社区有话说
前端
2301_800976931 小时前
正则表达式
开发语言·python·正则表达式
IT_陈寒1 小时前
Vite的public文件夹放静态资源?这坑我替你踩了
前端·人工智能·后端
码界奇点1 小时前
基于Python的新浪微博数据爬虫系统设计与实现
数据库·爬虫·python·毕业设计·新浪微博·源代码管理
涵涵(互关)2 小时前
GoView各项目文件中的相关语法2
前端·javascript·vue.js
子兮曰2 小时前
别让爬虫白嫖你的导航站了:纯免费,手把手实现加密字体防爬
前端·javascript·后端