服务器封装代码--关于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
相关推荐
秀儿还能再秀11 分钟前
神经网络(系统性学习四):深度学习——卷积神经网络(CNN)
人工智能·深度学习·机器学习·cnn·学习笔记
瑞雪流年26 分钟前
conda 创建环境失败故障解决记录
开发语言·python·conda
小彭努力中31 分钟前
141. Sprite标签(Canvas作为贴图)
前端·深度学习·3d·webgl·three.js
山山而川粤32 分钟前
大连环保公益管理系统|Java|SSM|Vue| 前后端分离
java·开发语言·后端·学习·mysql
Who_Mr.Lin41 分钟前
【虚拟机】VMWare的CentOS虚拟机断电或强制关机出现问题
linux·运维·centos
codists1 小时前
《Django 5 By Example》阅读笔记:p237-p338
python·django
小白也有IT梦1 小时前
Python 虚拟环境使用指南
python
开MINI的工科男1 小时前
【笔记】自动驾驶预测与决策规划_Part7_数据驱动的预测方法
人工智能·自动驾驶·端到端·预测与决策·多模态预测
我是唐青枫1 小时前
Linux nc 命令详解
linux·运维·服务器
张丹 新叶之扉1 小时前
图片预览 图片上传到服务器
服务器·前端·html5·js