服务器封装代码--关于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
相关推荐
bst@微胖子41 分钟前
Python高级语法之selenium
开发语言·python·selenium
Luis Li 的猫猫2 小时前
深度学习中的知识蒸馏
人工智能·经验分享·深度学习·学习·算法
查理零世2 小时前
【蓝桥杯集训·每日一题2025】 AcWing 6118. 蛋糕游戏 python
python·算法·蓝桥杯
魔尔助理顾问3 小时前
一个简洁高效的Flask用户管理示例
后端·python·flask
java1234_小锋3 小时前
一周学会Flask3 Python Web开发-request请求对象与url传参
开发语言·python·flask·flask3
木觞清4 小时前
PyTorch与TensorFlow的对比:哪个框架更适合你的项目?
人工智能·pytorch·tensorflow
鹿鸣悠悠4 小时前
第二月:学习 NumPy、Pandas 和 Matplotlib 是数据分析和科学计算的基础
学习·numpy·pandas
Java能学吗5 小时前
2.17学习总结
数据结构·学习
诚信爱国敬业友善6 小时前
常见排序方法的总结归类
开发语言·python·算法
靡不有初1116 小时前
CCF-CSP第31次认证第二题——坐标变换(其二)【NA!前缀和思想的细节,输出为0的常见原因】
c++·学习·ccfcsp