【Python教程】CentOS系统下Miniconda3安装与Python项目后台运行全攻略

一、引言

为了在CentOS系统上高效地开发和运行Python项目,我们常常需要借助Miniconda3来管理Python环境。本文将详细介绍如何在CentOS系统上安装Miniconda3,并将Python项目部署到后台运行。

二、Miniconda3和CentOS系统介绍

Miniconda3介绍

Miniconda是一个轻量级的Anaconda发行版,它只包含了conda、Python以及一些必要的依赖包。相比于Anaconda,Miniconda占用的磁盘空间更小,安装速度更快,非常适合在资源有限的环境中使用。conda是一个强大的包管理和环境管理工具,它可以帮助我们轻松地创建、管理和切换不同的Python环境,避免不同项目之间的依赖冲突。

三、Miniconda3的安装步骤

(一)下载Miniconda3安装包

打开终端,使用wget命令从官方网站下载Miniconda3的安装包。以下是下载最新版本的Miniconda3的命令:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

(二)运行安装脚本

下载完成后,运行安装脚本。在终端中执行以下命令:

bash Miniconda3-latest-Linux-x86_64.sh

运行脚本后,会出现一系列提示信息,按照提示依次按下回车键,阅读许可协议并输入“yes”同意协议,选择安装路径(默认路径为用户的主目录下的miniconda3文件夹),最后输入“yes”完成安装。

(三)激活conda环境

安装完成后,需要激活conda环境。在终端中执行以下命令:

source ~/.bashrc

然后验证conda是否安装成功,执行以下命令查看conda的版本信息:

conda --version

如果输出了conda的版本号,则说明安装成功。

四、Python项目的部署过程

(一)创建Python虚拟环境

为了避免不同项目之间的依赖冲突,建议为每个Python项目创建一个独立的虚拟环境。在终端中执行以下命令创建一个名为myenv的虚拟环境,并指定Python版本为3.8:

conda create -n myenv python=3.8

创建完成后,激活该虚拟环境:

conda activate myenv

(二)安装项目依赖

在激活的虚拟环境中,使用pip或conda安装项目所需的依赖包。例如,如果项目依赖于Flask和numpy,可以执行以下命令进行安装:

pip install flask numpy

或者使用conda进行安装:

conda install flask numpy

(三)上传或克隆项目代码

将本地的Python项目代码上传到CentOS服务器,或者使用git命令从代码仓库中克隆项目代码。例如,使用以下命令克隆一个GitHub上的项目:

git clone https://github.com/username/repository.git

(四)配置项目

进入项目目录,根据项目的需求进行配置。例如,修改配置文件、设置环境变量等。

Python项目部署步骤截图

五、将Python项目设置为后台运行

(一)使用nohup命令

nohup命令可以让进程在终端关闭后继续运行。在项目目录下,执行以下命令将Python脚本在后台运行,并将输出重定向到一个日志文件中:

nohup python main.py > output.log 2>&1 &

解释一下命令的各个部分:

  • nohup:忽略挂断信号,使进程在终端关闭后继续运行。
  • python main.py:运行Python脚本。
  • >:重定向标准输出。
  • output.log:指定日志文件名。
  • 2>&1:将标准错误输出重定向到与标准输出相同的位置。
  • &:使命令在后台运行。

按下Enter键执行命令后,会看到一个输出类似于nohup: ignoring input and appending output to ‘output.log’的消息,这意味着Python脚本已经在后台启动。

(二)使用screen命令

screen是一个终端多路复用器,可以让我们在断开终端后重新连接到会话。首先,安装screen:

sudo yum install screen

然后,启动一个新的screen会话:

screen -S mysession

在screen会话中运行Python脚本:

python main.py

按下Ctrl+A然后按D来分离screen会话。这样,即使关闭终端,Python脚本仍然会在后台运行。如果需要重新连接到screen会话,可以使用以下命令:

screen -r mysession

(三)使用systemd服务

systemd是CentOS的初始化系统,可以用来管理守护进程。创建一个新的服务文件:

sudo vi /etc/systemd/system/my_python_service.service

在文件中添加以下内容:

[Unit] Description=My Python Script After=network.target [Service] ExecStart=/usr/bin/python3 /path/to/main.py WorkingDirectory=/path/to/your/script Restart=always User=your_username [Install] WantedBy=multi-user.target

解释一下配置文件的各个部分:

  • [Unit]:描述服务的基本信息。
  • Description:服务的描述信息。
  • After:指定服务在网络服务启动后启动。
  • [Service]:描述服务的具体配置。
  • ExecStart:指定要运行的命令。
  • WorkingDirectory:指定脚本的工作目录。
  • Restart:确保脚本在崩溃或系统重启后自动重启。
  • User:指定运行脚本的用户。
  • [Install]:描述服务的安装信息。
  • WantedBy:指定服务在多用户模式下启动。

保存并退出编辑器,重新加载systemd配置:

sudo systemctl daemon-reload

启动服务并设置为开机自启动:

sudo systemctl start my_python_service sudo systemctl enable my_python_service

六、检查和管理后台运行项目

(一)检查项目运行状态

可以使用以下命令检查后台运行的Python进程:

ps aux | grep python

这将列出与Python脚本相关的进程信息,根据输出找到进程ID(PID)。

(二)查看日志文件

如果使用nohup命令将输出重定向到了日志文件,可以使用以下命令查看日志文件的内容:

tail -f output.log

这将实时显示日志文件的最新内容。

(三)停止项目运行

如果需要停止后台运行的Python项目,可以使用以下命令终止相关进程:

kill <pid>

<pid>替换为实际的进程ID。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【读点论文】A Survey on Open-Set Image Recognition

A Survey on Open-Set Image Recognition Abstract 开集图像识别(Open-set image recognition&#xff0c;OSR)旨在对测试集中已知类别的样本进行分类&#xff0c;并识别未知类别的样本&#xff0c;在许多实际应用中支持鲁棒的分类器&#xff0c;如自动驾驶、医疗诊断、安全监…

使用DuckDB查询DeepSeek历史对话

DeepSeek网页版在左下角个人信息/系统设置的账号管理页签中有个“导出所有历史对话”功能&#xff0c;点击“导出”&#xff0c;片刻就能生成一个deepseek_data-2025-06-14.zip的文件&#xff0c;里面有2个json文件&#xff0c;直接用文本编辑器查看不太方便。 而用DuckDB查询却…

多线程下 到底是事务内部开启锁 还是先加锁再开启事务?

前言 不知大家是否有观察到一个最常见的错误&#xff1a; 先开启事务&#xff0c;然后针对资源加锁&#xff0c;操作资源&#xff0c;然后释放锁&#xff0c;最后提交事务 你是否发现了在这样的场景下会出现并发安全的问题&#xff1f; &#xff08;提示&#xff1a;一个线程A…

Javascript解耦,以及Javascript学习网站推荐

一、学习网站推荐 解构 - JavaScript | MDN 界面如下&#xff0c;既有知识点&#xff0c;也有在线编译器执行代码。初学者可以看看 二、Javascript什么是解构 解构语法是一种 Javascript 语法。可以将数组中的值或对象的属性取出&#xff0c;赋值给其他变量。它可以在接收数…

Java大模型开发入门 (11/15):让AI自主行动 - 初探LangChain4j中的智能体(Agents)

前言 在过去的十篇文章里&#xff0c;我们已经打造出了一个相当强大的AI应用。它有记忆&#xff0c;能进行多轮对话&#xff1b;它有知识&#xff0c;能通过RAG回答关于我们私有文档的问题。它就像一个博学的“学者”&#xff0c;你可以向它请教任何在其知识范围内的问题。 但…

Qt KDReports详解与使用

Qt KDReports详解与使用 一、KD Reports 简介二、安装与配置三、核心功能与使用1、创建基础报表2、添加表格数据3、导出为 PDF4、XML报表定义 四、高级功能1、动态数据绑定2、自定义图表3、模板化设计4、页眉页脚设置 五、常见问题六、总结七、实际应用示例&#xff1a;发票生成…

Spring Cloud 原生中间件

&#x1f4dd; 代码记录 Consul&#xff08;服务注册与发现 分布式配置管理&#xff09; 拥有服务治理功能&#xff0c;实现微服务之间的动态注册与发现 ❌不在使用Eureka&#xff1a;1. 停更进维 2. 注册中心独立且和微服务功能解耦 Consul官网 Spring官方介绍 三个注册中…

CMake实践: 以开源库QSimpleUpdater为例,详细讲解编译、查找依赖等全过程

目录 1.环境和工具 2.CMake编译 3.查找依赖文件 3.1.windeployqt 3.2.dumpbin 4.总结 相关链接 QSimpleUpdater&#xff1a;解锁 Qt 应用自动更新的全新姿势-CSDN博客 1.环境和工具 windows 11, x64 Qt5.12.12或Qt5.15.2 CMake 4.0.2 干净的windows 7&#xff0c;最好是…

WordToCard制作高考志愿填报攻略小卡片【豆包版】

一、什么是WordToCard WordToCard是一个免费的工具&#xff0c;能够将Word文档自动转换为美观的知识卡片或图文海报。以下是它的主要特点&#xff1a; 功能优势 格式支持&#xff1a;支持标题、列表、表格、LaTeX公式等多种格式。模板丰富&#xff1a;提供多种风格的模板&am…

什么是PostCSS

PostCSS是一个用 JavaScript 工具和插件转换 CSS 代码的工具 PostCSS是基于 JavaScript 的 CSS 转换引擎&#xff0c;通过插件系统对 CSS 进行现代化处理&#xff0c;PostCSS 不是预处理器&#xff0c;而是 CSS 的编译器工具链&#xff0c;如同 Babel 之于 JavaScript&#xf…

游戏引擎学习第315天:取消排序键的反向顺序

仓库:https://gitee.com/mrxiao_com/2d_game_8 必须保证代码能跟上不然调试很麻烦 回顾并为今天定调 目前正处于对引擎中 Z 轴处理方式进行修改的阶段。上次我们暂停在一个节点&#xff0c;当时我们希望不再让所有屏幕上的精灵都必须通过同一个排序路径进行排序。我们想要将…

MySQL EXPLAIN 详解

MySQL EXPLAIN 详解:掌握 SQL 性能优化的关键工具 在日常数据库开发和优化过程中,很多开发者会遇到 SQL 查询变慢、索引未命中等问题。MySQL 提供了一个非常实用的工具 —— EXPLAIN 关键字,它可以帮助我们分析 SQL 查询的执行计划,识别潜在的性能瓶颈,从而有针对性地进行…

k8s使用私有harbor镜像源

前言 在node上手动执行命令可以正常从harbor拉取镜像&#xff0c;但是用k8s不行&#xff0c;使用kubectl describe pods xxx 提示未授权 unauthorized to access repository。 处理方法 创建一个secrete资源对象。以下示例中 registry-harbor 为secret资源对象的名称。除了邮…

AI绘画能发展到企业大规模使用的地步么?

1 技术演进与当前成熟度 AI绘画技术经历了从实验室概念到商业级工具的蜕变过程。早期技术受限于模型坍缩等问题&#xff0c;难以满足商业需求。关键突破出现在新型生成模型的应用&#xff0c;大幅提升生成速度至30秒内&#xff0c;在画面逻辑性和风格多样性方面实现质的飞跃。…

使用MyBatis-Plus实现数据权限功能

什么是数据权限 数据权限是指系统根据用户的角色、职位或其他属性&#xff0c;控制用户能够访问的数据范围。与传统的功能权限&#xff08;菜单、按钮权限&#xff09;不同&#xff0c;数据权限关注的是数据行级别的访问控制。 常见的数据权限控制方式包括&#xff1a; 部门数…

大模型——Dify 与 Browser-use 结合使用

大模型——Dify 与 Browser-use 结合使用 Dify 与 Browser-use 的结合使用,能够通过 AI 决策与自动化交互的协同,构建智能化、场景化的业务流程。 以下是两者的整合思路与技术落地方案: 一、核心组合逻辑 分工定位 Dify:作为AI模型调度中枢,负责自然语言理解、决策生成、…

transformer demo

import torch import torch.nn as nn import torch.nn.functional as F import math import numpy as np import pytestclass PositionalEncoding(nn.Module):def __init__(self, d_model, max_seq_length5000):super(PositionalEncoding, self).__init__()# 创建位置编码矩阵p…

centos 8.3(阿里云服务器)mariadb由系统自带版本(10.3)升级到10.6

1. 备份数据库 在进行任何升级操作前&#xff0c;务必备份所有数据库&#xff1a; mysqldump -u root -p --all-databases > all_databases_backup.sql # 或者为每个重要数据库单独备份 mysqldump -u root -p db_name1 > db_name1_backup.sql mysqldump -u root -p db…

如何稳定地更新你的大模型知识(算法篇)

目录 在线强化学习的稳定知识获取机制:算法优化与数据策略一、算法层面的稳定性控制机制二、数据处理策略的稳定性保障三、训练过程中的渐进式优化策略四、环境设计与反馈机制的稳定性影响五、稳定性保障的综合应用策略六、总结与展望通过强化学习来让大模型学习高层语义知识,…

图的遍历模板

图的遍历 BFS 求距离 #include<bits/stdc.h>using namespace std;int n, m, k,q[20001],dist[20001]; vector<int> edge[20001];int main(){scanf("%d%d%d",&n,&m,&k);for (int i 1;i<m;i){int x,y;scanf("%d%d",&x,&am…