首页 > 其他分享 >服务器封装代码--关于GDAL的处理(同时涉及虚拟环境中GDAL的配置)

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

时间:2024-11-02 20:47:27浏览次数:5  
标签:-- app py whl 虚拟环境 cp38 my GDAL

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

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

二、有关于GDAL的处理

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

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

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

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

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文件的情况该怎么实现

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

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

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

# 使用 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. 最终要实现的文件夹结构:

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 的实现

# 使用 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 的记录

torch==1.7.1+cu110
torchaudio==0.7.2
torchvision==0.8.2+cu110
ultralytics
opencv-python-headless

标签:--,app,py,whl,虚拟环境,cp38,my,GDAL
From: https://blog.csdn.net/weixin_68930974/article/details/143455850

相关文章

  • 第八届御网杯线下赛Pwn方向题解
    由于最近比赛有点多,而且赶上招新,导致原本应该及时总结的比赛搁置了,总结来说还是得多练,因为时间很短像这种线下赛,一般只有几个小时,所以思路一定要清晰,我还是经验太少了,导致比赛力不从心,先鸽了~Skillchecksec检查保护(没有开PIE和Canary)ida逆向分析一下不同的选项对应不......
  • 打响反对人工智能的第一枪
    序言:人工智能的讨论不能只有一片叫好的声音,一味的追捧反而可能隐藏巨大的危机。因此,必须有反对的声音,且越强烈越能激发深入思考。本篇文章的作者就以犀利的视角,漂亮地打响了反对人工智能应用的第一枪。我以前一直以为人工智能的狂热会自然消退,也许等泡沫不可避免地破灭时会......
  • 基于ssm的高校学分管理系统的设计与实现
             博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实实在在的写点程序。......
  • 第一次在linux虚拟机上运行代码
    之前用的是Centos7,内置的gcc版本是4.8.5,不能直接支持C++11,我又换了个Centos9,重新装了一遍虚拟机,这下gcc是11.5.0的版本号。写了一个helloworld的C++程序,命名为test.cpp,运行编译器的命令为如下:g++-otesttest.cpp随后在当前目录底下就会出现一个test的文件,然后再输入./te......
  • C++优选算法 分治-快排
    一、基本思想快速排序采用分治法策略,将一个大数组(或子数组)分为两个小数组,然后递归地对这两个小数组进行排序。其基本思想可以概括为“分解、解决、合并”三个步骤:分解:将原问题(即待排序的数组)分解为若干个规模较小、相互独立且与原问题形式相同的子问题(即子数组)。解决:若子问题......
  • LeetCode24:两两交换链表中的节点
    原题地址:.-力扣(LeetCode)题目描述给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]输出:[1]......
  • LeetCode25:K个一组翻转链表
    原题地址:.-力扣(LeetCode)题目描述给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需......
  • Pandas相关性分析
    1.相关性分析定义  在Pandas中,数据相关性分析是通过计算不同变量之间的相关系数来了解它们之间的关系。在Pandas中,数据相关性是一项重要的分析任务,它帮助我们理解数据中各个变量之间的关系。2.使用corr()方法计算数据集中每列之间的关系df.corr(method='pearson',......
  • AI驱动的低代码未来:加速应用开发的智能解决方案
    引言随着数字化转型的浪潮席卷全球,企业对快速构建应用程序的需求愈发强烈。然而,传统的软件开发周期冗长、成本高昂,往往无法满足快速变化的市场需求。在此背景下,低代码平台逐渐成为开发者和企业的优选方案,以其“低门槛、高效率”的特性,让非技术人员也能够参与到应用开发中。然......
  • 全网最详细K8S部署redis cluster
    K8S部署redisclusterRedisCluster介绍Redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis通过哨兵(Sentinel)和自动分区(Cluster)提供高可用性(highavailability)。在Redis集群中,节点负责保存数据并获取集群状态,包括将键映射到正确的......