服务器封装代码--关于GDAL的处理(同时涉及虚拟环境中GDAL的配置)

一、服务器封装代码的基础操作

大家可以看一下前面写的这篇博客,不涉及到特殊的包(例如GDAL),基本是可以正常封装的

二、有关于GDAL的处理

网上很多有关于GDAL的.whl文件网址都失效了,在公众号:遥感与深度学习 中发现了可以用的 .whl 文件(亲测有效!)

下载完 GDAL 后,后续步骤如下,举个例子(文件夹结构如下):

python 复制代码
my_project/
├── Dockerfile
├── requirements.txt
├── my_package.whl      # 预先下载的 .whl 文件
└── app.py              # Python 应用程序

在进入 my_project 目录下,进入虚拟环境后,运行:

python 复制代码
pip install my_package.whl

大家也可以参考一下其他处理报错的博客:
https://blog.csdn.net/qq_38308388/article/details/128304266
https://blog.csdn.net/weixin_45866058/article/details/139298787

三、新版dockerfile(先后运行a.py和b.py文件该怎么实现,文件夹中有.whl文件的情况该怎么实现)

1. 文件夹中有.whl文件的情况该怎么实现

这里先举一个小例子,文件夹结构如下:

python 复制代码
my_project/
├── Dockerfile
├── requirements.txt
├── my_package.whl      # 预先下载的 .whl 文件
└── app.py              # Python 应用程序

dockerfile实现(仅作为一个小例子):

python 复制代码
# 使用 Python 3.8 作为基础镜像
FROM python:3.8

# 设置工作目录
WORKDIR /app

# 将本地文件复制到容器中
COPY . /app

# 安装依赖(假设 requirements.txt 中没有列出 my_package,因为我们要直接使用 .whl 文件)
RUN pip install -r requirements.txt

# 使用 .whl 文件安装包
RUN pip install ./my_package.whl

# 运行应用程序
CMD ["python", "app.py"]
  • COPY . /app:将本地文件夹(包括 my_package.whl)复制到 Docker 容器的 /app 目录。
  • pip install ./my_package.whl:在 Docker 容器中运行 pip install 命令来安装这个 .whl 文件中的包。这里的路径 ./my_package.whl 指的是 /app/my_package.whl,因为我们之前将文件复制到了 /app 目录。
  • CMD ["python", "app.py"]:指定容器启动时要运行的命令,这里运行的是 app.py 脚本。

2. 最终要实现的文件夹结构:

python 复制代码
my_project/
├── Dockerfile
├── requirements.txt                    # 项目的 Python 依赖文件
├── inference.py                        # 第一个 Python 脚本
├── save_location.py                    # 第二个 Python 脚本
├── torch-1.7.1+cu110-cp38-cp38-linux_x86_64.whl  # 本地的 torch 包
├── torchvision-0.8.2+cu110-cp38-cp38-linux_x86_64.whl  # 本地的 torchvision 包
├── torchaudio-0.7.2-cp38-cp38-linux_x86_64.whl   # 本地的 torchaudio 包
├── GDAL-3.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl  # 本地的 GDAL 包
└── (其他代码或文件)

3.最后项目 dockerfile 的实现

python 复制代码
# 使用 Ubuntu 20.04 作为基础镜像
FROM ubuntu:20.04

# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive

# 更新包管理器并安装基础工具
RUN apt-get update && \
    apt-get install -y wget curl python3 python3-pip && \
    rm -rf /var/lib/apt/lists/*

# 设置工作目录
WORKDIR /app

# 复制你的项目代码和数据集
COPY . .

# 创建输入输出文件夹
RUN mkdir /app/input
RUN mkdir -p /app/output


# 安装 numpy
RUN pip3 install numpy==1.21.6 -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装 torch 和 torchvision 和 torchaudio(本地包)
RUN pip3 install ./torch-1.7.1+cu110-cp38-cp38-linux_x86_64.whl && \
    pip3 install ./torchvision-0.8.2+cu110-cp38-cp38-linux_x86_64.whl && \
    pip3 install ./torchaudio-0.7.2-cp38-cp38-linux_x86_64.whl

# 安装其他依赖
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装 gdal(本地包)
RUN pip3 install ./GDAL-3.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

# 设置容器启动时执行的命令
CMD python3 inference.py && python3 save_location.py

最后一句代码解决我们之前提到的问题:先后运行a.py和b.py文件该怎么实现

4.requirements.txt 的记录

python 复制代码
torch==1.7.1+cu110
torchaudio==0.7.2
torchvision==0.8.2+cu110
ultralytics
opencv-python-headless
相关推荐
qq_4336184411 分钟前
shell 编程(五)
linux·运维·服务器
XianxinMao13 分钟前
Transformer 架构对比:Dense、MoE 与 Hybrid-MoE 的优劣分析
深度学习·架构·transformer
VVVVWeiYee43 分钟前
项目2路由交换
运维·服务器·网络·网络协议·信息与通信
88号技师1 小时前
2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码
人工智能·算法·matlab·优化算法
IT猿手1 小时前
多目标应用(一):多目标麋鹿优化算法(MOEHO)求解10个工程应用,提供完整MATLAB代码
开发语言·人工智能·算法·机器学习·matlab
青春男大1 小时前
java栈--数据结构
java·开发语言·数据结构·学习·eclipse
88号技师1 小时前
几款性能优秀的差分进化算法DE(SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin)-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
2301_764441331 小时前
基于python语音启动电脑应用程序
人工智能·语音识别
lifeng43212 小时前
Jenkins集成部署(图文教程、超级详细)
运维·jenkins
HyperAI超神经2 小时前
未来具身智能的触觉革命!TactEdge传感器让机器人具备精细触觉感知,实现织物缺陷检测、灵巧操作控制
人工智能·深度学习·机器人·触觉传感器·中国地质大学·机器人智能感知·具身触觉