服务器封装代码--关于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
相关推荐
狐凄6 分钟前
Python实例题:Python计算概率论
开发语言·python·概率论
Leo.yuan8 分钟前
数据湖是什么?数据湖和数据仓库的区别是什么?
大数据·运维·数据仓库·人工智能·信息可视化
Y3174299 分钟前
python Day46 学习(日志Day15复习)
python·学习·机器学习
这里有鱼汤10 分钟前
一文读懂量化交易中最常用的5种均线,附源码,建议收藏
后端·python
仙人掌_lz28 分钟前
如何打造一款金融推理工具Financial Reasoning Workflow:WebUI+Ollama+Fin-R1+MCP/RAG
人工智能·搜索引擎·ai·金融·llm·rag·mcp
学不会就看29 分钟前
selenium学习实战【Python爬虫】
python·学习·selenium
程序员JerrySUN29 分钟前
Linux 内核内存管理子系统全面解析与体系构建
java·linux·运维
q5673152331 分钟前
分布式增量爬虫实现方案
开发语言·分布式·爬虫·python
MILI元宇宙31 分钟前
纳米AI搜索与百度AI搜、豆包的核心差异解析
人工智能·百度
勤奋的知更鸟37 分钟前
LLaMA-Factory和python版本的兼容性问题解决
开发语言·python·llama-factory