从永远到永远-Linux环境Miniconda部署Python服务

Linux环境Miniconda部署Python服务

  • 0.背景
  • 1.关于Miniconda
    • 1.定义
    • 2.Miniconda、Conda、Anaconda
  • 2.安装Miniconda
    • 1.下载
    • 2.安装
    • 3.配置环境变量
    • 4.禁用base环境
    • 5.配置镜像源
  • 3.搭建Python环境
    • 1.创建Python环境
    • 2.部署Python环境
  • 4.部署Python项目
  • 5.gunicorn安装使用 TODO
    • 1.
  • 6.Flask TODO
    • 99.参考

0.背景

新项目需要整合Python算法,为了减少异构系统版本及依赖的影响,降低整合难度,Python算法基于Flask开发为web服务。开发完成后,需要部署到Linux服务器作为web服务运行。因为Python工程师不熟悉Linux环境,部署的任务”顺理成章“地落到了我的头上。

1.关于Miniconda

1.定义

Miniconda是一款小巧的python环境管理工具,安装包大约只有50M多点,其安装程序中包含conda软件包管理器和Python。

2.Miniconda、Conda、Anaconda

  • Conda:Conda是一个开源的包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。它主要用于Python编程语言及其相关的数据科学、机器学习等应用领域。
  • Anaconda是一个用于科学计算的Python发行版,它包含了conda、Python和许多常用的科学计算、数据分析、机器学习等库。
  • Miniconda是一个轻量级的Anaconda发行版,它只包含conda和Python。相比于完整的Anaconda发行版,Miniconda的体积更小,安装速度更快,适合在资源受限的环境中使用,例如在某些嵌入式系统或容器中。

2.安装Miniconda

1.下载

官方下载地址
下载Linux版本

2.安装

上传到Linux,如/opt目录下,执行脚本:

bash Miniconda3-latest-Linux-x86_64.sh

可选 手动指定安装目录,在此步骤自定义输入: [/root/miniconda3] >>>

# 查看版本
conda --version

3.配置环境变量

#创建miniconda环境变量文件
vim /etc/profile.d/conda_env.sh

输入内容


#Miniconda
export CONDA_HOME=/opt/module/miniconda3
export PATH=$PATH:$CONDA_HOME/bin

加载环境变量配置文件

source /etc/profile.d/conda_env.sh 

4.禁用base环境

conda config --set auto_activate_base false

5.配置镜像源

外网下载速度极慢,配置国内镜像源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --set show_channel_urls yes

3.搭建Python环境

1.创建Python环境

# 创建python环境 版本3.11 名称 traffic
conda create --name traffic python=3.11
# 查看环境
conda info --envs
# 删除
conda remove -n 环境名称 --all

2.部署Python环境

# 激活环境
conda activate traffic

报错:

CondaError: Run 'conda init' before 'conda activate'

提示说先 conda init,查了资料,大家说可以

source activate
# 退出当前虚拟环境
conda deactivate

试了一下,解决了问题。

4.部署Python项目

上传python程序(app.py基于Flask开发)到某目录下,如/home/traffic
创建日志文件/home/traffic/logs/app.log,用于日志查看

# 激活环境
conda activate traffic
# 守护进程方式启动项目 
 nohup python app.py >/home/traffic/logs/app.log 2>&1 &

根据app.log的错误信息,安装下缺少的包:

# 安装相应的包 多个空格分隔
conda install numpy flask geopy

报错:

 conda install numpy flask geopy
Channels:
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
 - defaults
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  - geopy

Current channels:

  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - defaults

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.

解决:

conda config --add channels conda-forge

查看日志,或者查看进程ps aux | grep python,校验发现成功,收工。

5.gunicorn安装使用 TODO

根据4中启动日志WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.,启动python服务使用的是默认的web服务器。默认服务器性能极差,无法支撑需求。在此,我们使用gunicorn作为服务器替代。

1.

6.Flask TODO

99.参考

~
~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/558718.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode微博发布案例

样例: CSS代码: * {margin: 0;padding: 0; }ul{list-style: none; }.w {width: 900px;margin: 0 auto; }.controls textarea {width: 878px;height: 100px;resize: none;border-radius: 10px;outline: none;padding-left: 20px;padding-top: 10px;font-size: 18px; }.controls…

yolov8 区域计数

yolov8 区域计数 1. 基础2. 计数功能2.1 计数模块2.2 判断模块 3. 主代码4. 实验结果5. 源码 1. 基础 本项目是在 WindowsYOLOV8环境配置 的基础上实现的,测距原理可见上边文章 2. 计数功能 2.1 计数模块 在指定区域内计数模块 def count_objects_in_region(bo…

Redis: 在项目中的应用

文章目录 一、Redis的共享session应用二、分布式缓存1、缓存2、缓存一致性问题解决方案(缓存更新策略)(1)作用(2)三种策略(3)主动更新策略(数据库、缓存不一致解决方案&a…

SSL证书在HTTP与HTTPS中的角色差异是什么?

在互联网的广泛应用背景下,随着网络攻击和数据泄露事件频发,保障用户的数据安全已成为至关重要的议题。传统的HTTP协议在传输数据时不进行加密处理,导致数据在传输过程中暴露于潜在的窃听和篡改风险中,安全性薄弱。而通过引入SSL/…

【HC32L110】华大低功耗单片机启动文件详解

本文主要记录华大低功耗单片机 HC32L110 的 汇编启动过程,包括startup_hc32l110启动文件详细注释 目录 1.启动文件的作用2.堆栈定义2.1 栈2.2堆 3.向量表4.复位程序5.中断服务程序6.堆栈初始化启动过程详解7.1从0地址开始7.2在Reset_Handler中干了啥? 8.…

危险场景智能运维巡检系统

在石油、天然气、煤炭和化工等行业,特别是在I/IIC级防爆区场景中,存在着诸如易燃、易爆、高温、有毒有害以及粉尘等危险因素。例如,油气转运站、催化裂化装置、煤化工甲醇车间以及制氢站等地点,都面临着这些潜在的危险。传统的人工…

VOJ 网页跳转 题解 STL栈

网页跳转 用例输入 10 VISIT https://www.jisuanke.com/course/476 VISIT https://www.taobao.com/ BACK BACK FORWARD FORWARD BACK VISIT https://www.jisuanke.com/course/429 FORWARD BACK用例输出 https://www.jisuanke.com/course/476 https://www.taobao.com/ https…

echart实现排名列表

function createHorizontalBarChart(chartId, data) {if (typeof echarts undefined) {console.error(请先引入 ECharts 库);return;}// 初始化echarts实例var myChart echarts.init(document.getElementById(chartId));// 对数据按照 value 进行降序排序var sortedData dat…

k8s配置configmap指定到容器的指定文件

我们需要将名称为walletkey.properties的文件做成configmap,然后将walletkey.properties文件单独挂载出来到/data/walletkey.properties,且不能覆盖/data目录,具体如下 1、创建configmap configmap文件内容 其中walletkey.properties: >-引…

课时100:正则表达式_基础实践_基础知识

3.1.1 基础知识 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 需求 我们之前的一些操作,很大程度上都是基于特定的关键字来进行实践的,尤其是面对一些灵活的场景,我们因为过于限定一些关键字&am…

【配电网故障定位】基于二进制矮猫鼬优化算法的配电网故障定位 33节点配电系统故障定位【Matlab代码#82】

文章目录 【获取资源请见文章第6节:资源获取】1. 配电网故障定位2. 二进制矮猫鼬优化算法3. 算例展示4. 部分代码展示5. 仿真结果展示6. 资源获取 【获取资源请见文章第6节:资源获取】 1. 配电网故障定位 配电系统故障定位,即在配电网络发生…

Tensorflow2.0笔记 - 使用卷积神经网络层做CIFA100数据集训练(类VGG13)

本笔记记录CNN做CIFAR100数据集的训练相关内容,代码中使用了类似VGG13的网络结构,做了两个Sequetial(CNN和全连接层),没有用Flatten层而是用reshape操作做CNN和全连接层的中转操作。由于网络层次较深,参数量…

在 Node.js 中配置代理 IP 采集文章

不说废话,直接上代码: const http require(http); const https require(https);// 之后可以使用 http 或 https 模块发起请求,它们将自动使用配置的代理 // 代理ip:https://www.kuaidaili.com/?refrg3jlsko0ymg const proxy …

JavaScript算数运算符

源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> <b…

Bert语言大模型基础

一、Bert整体模型架构 基础架构是transformer的encoder部分&#xff0c;bert使用多个encoder堆叠在一起。 主要分为三个部分&#xff1a;1、输入部分 2、注意力机制 3、前馈神经网络 bertbase使用12层encoder堆叠在一起&#xff0c;6个encoder堆叠在一起组成编码端&#xf…

ZooKeeper设置监听器

ZooKeeper设置监听器&#xff0c;通过getData()/getChildern()/xists()方法。 步骤&#xff1a; 1.创建监听器&#xff1a;创建一个实现Watcher接口的类&#xff0c;实现process()方法。这个方法会在ZooKeeper向客户端发送一个Watcher事件通知的时候被调用。 2.注册监听器&…

【工厂模式】工厂方法模式、抽象工厂模式-简单例子

简单工厂模式&#xff0c;请跳转到我的另一篇博客【工厂模式】简单工厂模式-简单例子-CSDN博客 四、工厂方法模式 &#xff08;1&#xff09;这部分还是不变&#xff0c;创建一个Car接口&#xff0c;和两个实现类。 public interface Car {void name(); }public class WuLing…

深入刨析 mysql 底层索引结构B+树

文章目录 前言一、什么是索引&#xff1f;二、不同索引结构对比2.1 二叉树2.2 平衡二叉树2.3 B-树2.4 B树 三、mysql 的索引3.1 聚簇索引3.2 非聚簇索引 前言 很多人看过mysql索引的介绍&#xff1a;hash表、B-树、B树、聚簇索引、主键索引、唯一索引、辅助索引、二级索引、联…

C#语法知识之循环语句

5、循环语句 文章目录 1、while思考1 斐波那契数列思考2 判断一个数是否为质数思考3 找出100以内的质数 2、do...while3、for思考1 找水仙花数思考2 乘法表 1、while 1、作用 让代码重复去执行 2、语法相关 while(bool类型值){//当满足条件时&#xff0c;就会执行while语句…

大话设计模式-里氏代换原则

里氏代换原则&#xff08;Liskov Substitution Principle&#xff0c;LSP&#xff09; 概念 里氏代换原则是面向对象设计的基本原则之一&#xff0c;由美国计算机科学家芭芭拉利斯科夫&#xff08;Barbara Liskov&#xff09;提出。这个原则定义了子类型之间的关系&#xff0…