Centos7部署Python程序详解

news2024/12/29 0:19:50

Centos7服务器部署Python

本文章前半部分为部署过程,后半部分为部署中碰到的问题及解决方案,仅供参考!!!,本文示例为部署py文件为例。

部署步骤:

登录centos7服务器后

1.查看python版本

python -V

系统自带为2.7版本,本地开发使用3.8.6,所以要更换版本,2.7的不要卸载,因为yum等等命令啥的都要依赖python2,所以先安装新版本,使用时根据实际情况切换不同版本使用即可。

2.网络配置:

因后续操作安装很多依赖包,要确保服务器可连外网,根据实际情况可忽略此步骤

vi /etc/sysconfig/network-scripts/ifcfg-ens33
连接外网配置:
ONBOOT=yes DNS1=8.8.8.8
重启网卡:
service network restart

在这里插入图片描述

虚拟机网络改为桥接模式

3.安装python3.8

规划将python相关内容放在usr/local里面所以:

cd /usr/local

下载python3,版本最好与你本地开发版本一致,避免后续导入依赖出现版本不兼容问题!!!!!

wget https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tgz

在这里插入图片描述
后半部分有解决方法。

在当前目录下解压:

tar -zxvf Python-3.8.6.tgz -C /usr/local

解压后进入目录:

cd /usr/local/Python-3.8.6

执行配置命令即可:

./configure --prefix=/usr/local/python3.8.6

编译与安装:

make && make install

可以使用这个命令:/usr/local/Python-3.8.6/bin/pip3 list查看, python3 是否安装成功了,若报pip未找到,可查看后半部分解决方案。
在这里插入图片描述

建立软连接:
由于系统已经安装了python2的版本,因此这里在bin下的启动程序还是python2的,这里我们需要把老版本做个移置更名作为备份,否则直接命令行执行python,打开的还是老版本。

在这里插入图片描述

现在就是需要将 python3 这个文件建立软连接,使 python 指向 python3 即可进入cd /usr/bin目录首先执行命令mv python python.back 把原来的python做一个备份,然后执行软连接命令:

ln -s /usr/local/Python-3.8.6/bin/python3.8 /usr/bin/python

现在,如果我们直接输入python,默认打开的就是python3。
在这里插入图片描述

4.创建虚拟环境:

创建虚拟环境
一般每个不同的项目都会依赖各自的库,有些库的版本不一样会引起冲突,为了解决这个问题,需要使用虚拟环境,Python可以在每个项目目录下创建各自的虚拟环境,项目所依赖的包就在当前目录环境下,这样避免了库版本的冲突,也方便相同操作系统间可以快速的拷贝项目运行。
在Linux服务器上为项目创建虚拟环境,并安装项目所需的依赖执行以下命令:

cd /usr/local/Python-3.8.6/bin

若报找不到bin

cd /usr/local/python-3.8.6/bin

安装虚拟环境

pip3 install virtualenv

在这里插入图片描述
pip3未找到命令
通过find / -name pip3 如上图,确实找到了
做一个软连接即可

ln -sv /usr/local/Python-3.8.6/bin/pip3 /usr/bin/pip3
或
ln -sv /usr/local/python-3.8.6/bin/pip3 /usr/bin/pip3

再次执行:

pip3 install virtualenv

在这里插入图片描述
安装成功!!!!

为了便于操作,添加virtualenv的软链接:

ln -sv /usr/local/Python-3.8.6/bin/virtualenv /usr/bin/virtualenv
或
ln -sv /usr/local/python-3.8.6/bin/virtualenv /usr/bin/virtualenv

创建虚拟环境

virtualenv /usr/local/python3.8.6/workspace

在这里插入图片描述

进入虚拟环境

cd /usr/local/python3.8.6/workspace

5.启用虚拟环境

cd /usr/local/python3.8.6/workspace

执行命令:

source ./bin/activate

6.本地项目准备

生成项目依赖包清单:
本地项目中:

>pip3 freeze >requirements.txt

在这里插入图片描述
equirements.txt文件内容:

在这里插入图片描述

7.安装依赖清单里的库:

将requirements.txt文件上传至workspace目录。

在workspace目录执行命令:

 pip3 install -r requirements.txt

安装过程可能会有包版本不兼容或者其他等等问题,耐心解决,可参考后半部分内容!!!

8.启动程序:

将个人程序city_data.py上传至workspace目录中。

workspace目录下执行命令:nohup来保证python程序能够在后台运行

nohup python city_data.py &nohup python3 city_data.py &

以下 这样的命令在ssh终端退出后,python进程也会被杀掉

python city_data.py &
或
python3 city_data.py &

jobs 查看后台运行的进程

在这里插入图片描述

杀掉job:kill %2

%n代表的是jobs序号

9.退出虚拟环境:deactivate

若想退出虚拟环境,可执行deactivate
此过程非必须操作
在这里插入图片描述

10.其他用到的命令

查看文件详细信息:

ls -l

删除文件:

rm -i filename

#删除空目录

rm -r 目录名字

#删除目录及目录中所有文件

rm -rf 目录名字 

安装定时包

pip install schedule

卸载某包

pip uninstall 要卸载的包名
jobs 查看后台运行的进程
fg %n 让后台进程n转到前台
bg %n 让暂停运行的后台进程n继续运行
kill %n 杀死job,n为job的序号
kill x 通过进程号x杀掉程序 
ctrl+z 使前台正在运行的进程转到后台
ctrl+c 终止前台进程

查看python进程:

ps -ef | grep python

linux系统下载文件到本地:

sz 文件名

在这里插入图片描述

sz 命令安装:

yum -y install lrzsz

在这里插入图片描述

报错锦集:

1.解压命令:

报错:tar: 您不能指定超过一个"-Acdtrux"或是"–test-label"外的选项
请用“tar --help”或“tar --usage”获得更多信息。

tar -zxvf Python-3.8.6.tgz -c /usr/local  小写c改成大写

2.未安装合适的编译器error: no acceptable C compiler found in $PATH

在这里插入图片描述

解决方案-安装:yum install gcc

3.OpenSSL模块

安装python3.8报错:OPENSSL模块找不到:
在这里插入图片描述
升级openssl环境至openssl-1.1.1
在这里插入图片描述
更新一下:

yum update

安装gcc编译器:

yum install gcc

安装zlib依赖库:

yum install zlib-devel

安装openssl依赖库

yum install openssl-devel

ifconfig,如果输入“bash: ifconfig: 未找到命令”**

yum install -y net-tools.x86_64

报:Operating system: x86_64-whatever-linux2 You need Perl 5.
下载perl5链接:

https://www.cpan.org/src/5.0/perl-5.30.1.tar.gz

解压:

tar -xzf perl-5.30.1.tar.gz

预编译:

./Configure -des -Dprefix=$HOME/localperl

编译、安装:

make && make install

安装openssl

下载:

wget http://www.openssl.org/source/openssl-1.1.1v.tar.gz

安装:

tar zxf openssl-1.1.1v.tar.gz

进入:

cd openssl-1.1.1v

预编译&配置:
./config --prefix=/usr/local/openssl #如果报错,按照需要安装perl以及gcc包

编译&安装:

make && make install

备份:

mv /usr/bin/openssl /usr/bin/openssl.bak

建立软链接:

ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl

更新动态链接库数据:

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

设置生效:

ldconfig

查看版本:

openssl version

报错:-bash: /usr/bin/openssl: 没有那个文件或目录:

1、(此方法使用了,但不确定跟本次是否有关系)

mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak

软链接:

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/lib64/libssl.so.1.1  /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1  /usr/lib64/libcrypto.so.1.1
echo “/usr/local/openssl/lib” >> /etc/ld.so.conf

2、(使用的此方案)
添加OPESSL的环境变量,在etc/的profile的最后一行,添加:
#通过修改profile文件:

vim /etc/profile

在文件最后一行写入:

export OPENSSL=/usr/local/openssl/bin
export PATH=$OPENSSL:$PATH:$HOME/bin

要想马上生效还要运行以下命令,不然只能在下次重进此用户时生效。

source /etc/profile

3、(未使用)
使用源码按过于繁琐,如果对软件版本没有特殊要求的话可以使用yum命令安装和更新,既方便又快捷

yum install openssl
yum update openssl

4.pip、pip3命令未找到

cd /usr/bin/目录下查看确实没有PIP则需要安装:

sudo yum install python3-pip
或
sudo apt-get install python3-pip

pip3升级:

pip3 install --upgrade pip

5.vim命令找不到:

先查看是否已安装,命令:

rpm -qa | grep vim

发现只装了部分包,缺少安装。
直接重新安装:

yum -y install vim*

6.yum报错不能使用

修改yum配置:
编辑:

vi /usr/bin/yum

修改如下:

#!/usr/bin/python2.7

退出保存:
Esc键
:wq

7.依赖版本

执行pip3 install -r requirements.txt时报错:

报错:Could not find a version that satisfies the requirement cachetools5.2.0,ERROR: No matching distribution found for cachetools5.2.0
在这里插入图片描述
requirements.txt文件中cachetools指定的版本为5.2.0,导入时未找到此版本的,只能根据图中提示更换版本号,在requirements.txt文件中修改。
在这里插入图片描述

单独安装某包命令:

pip install cachetools==5.2.0  -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

twisted-iocpsupport包的报错:
twisted-iocpsupport==1.0.3
twisted-iocpsupport是一个提供到Windows“I/O完成端口”API的绑定的软件包。这些APIs仅适用于Windows。在linux环境中删除此依赖。
因本地是在windows系统开发,在linux中使用时在requirements.txt文件中将twisted-iocpsupport的信息删除。

8.python setup.py egg_info

报错内容:

Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-9hga3ga5/cryptography/
在这里插入图片描述

在这里插入图片描述

如提示:升级至最新的pip,然后重试。这将修复大多数错误
升级

pip3 install --upgrade pip

9.游标cursor

local variable ‘cursor’ referenced before assignment

可能数据库连接失败,导致对象创建失败

10.wget 命令找不到

查看wget 是否安装

rpm -qa|grep "wget"

安装:

yum -y install wget

11、Zlib报错

在这里插入图片描述
在这里插入图片描述
urlgrabber-ext-down文件配置修改:

vi /usr/libexec/urlgrabber-ext-down

修改成#! /usr/bin/python2.7

执行:

sudo yum install zlib

安装完成后发现还是会报错,需要安装zlib-dev所以我们再次安装zlib库。

 sudo yum install zlib*

12.安装虚拟环境时No matching distribution found for virtualenv

在这里插入图片描述
应该是网络问题,可通过以下命令解决:

pip3 install virtualenv -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

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

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

相关文章

Kotlin 高阶函数详解

高阶函数 在 Kotlin 中,函数是一等公民,高阶函数是 Kotlin 的一大难点,如果高阶函数不懂的话,那么要学习 Kotlin 中的协程、阅读 Kotlin 的源码是非常难的,因为源码中有太多高阶函数了。 高阶函数的定义 高阶函数的…

CGAL 点云分类

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 点云分类一直是点云数据应用的永恒课题,它包含很多,如地面点分类、建筑物分类、植被分类等。CGAL中也为我们提供了一种点云分类的方式,其具体的计算过程如下所述: 首先,使用点云中所携带的一些几何特征来对数据…

三、数据库索引

1、索引介绍 索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。 常见的索引结构有:B数,B树,Hash和红黑树等。在MySQL中,无论是 InnoDB还是MyISAM,都使用了B树作为索引…

西班牙卡瓦起泡酒的风味搭配

卡瓦是一种对食物友好的西班牙起泡酒,它的制作方法和香槟一样,可以和类似的食物搭配。卡瓦食物搭配包括各种食物,从海鲜和鱼到火腿,以及不同类型的小吃,也可以将卡瓦酒与甜点、水果和奶酪搭配。 卡瓦酒是世界上最著名的…

IDEA常用插件之注解插件

文章目录 注解插件JavaDoc插件安装修改配置生成文档加入自己信息 Easy JavaDoc安装插件在线安装离线安装中文名自动转英文加注释默认快捷键(可通过IDEA快捷键设置修改) 注解插件 JavaDoc插件 安装 修改配置 生成文档加入自己信息 Easy JavaDoc 中文文…

一种pug与html相互转换的工具

有时候看pug很不方便,这个语言虽然简洁,但可读性与维护性较差,所以需要进行转换,这个是win工具,比较方便。 这个工具的下载地址如下: https://download.csdn.net/download/qq_40032778/88244980 解压后如下…

PDFPrinting.Net Crack

PDFPrinting.Net Crack 它能够轻松灵活地预测完美的打印结果以及用户文件的示例性显示。在.NET的PDF打印中,可以快速浏览最关键的元素。如果用户需要获得更详细的概述,那么他可以查看快速入门手册,甚至现有文档的详细概述参考。 在这种情况下…

atxserver bug记录

8. 解决无法点击屏幕 原因:remotecontrol_android.html为按比例自动缩放,play.html(Django)显示的屏幕大小不会随页面放大缩小。有个h265方式获取的宽高是720*448,电脑上显示的大小是545*339,这个对不上&am…

理解机制,再探单元工厂的实现原理

最近有点忙,好久没更新文章了,今天继续再研究一下单元工厂的实现机制。为什么我们要这么重视这一块的内容呢?因为用计算机的目的是为了处理大量数据,如果数据量不大,大多情况下用纸就好了,专门用个计算设备的便捷性也就体现不出来。而大量数据的呈现方式的多样性精髓就在…

cuda编程002—流

没有使用同步的情况&#xff1a; #include <stdio.h> #include <cuda_runtime.h>__global__ void test_kernel(){printf("Message from Device.\n"); } void test(){test_kernel<<<1, 1>>>(); } #include <cuda_runtime.h> #i…

蓝蓝设计-UI设计公司作品-博晖创新原子吸收光谱仪软件交互及界面设计

博晖创新原子吸收光谱仪软件交互及界面设计 图标设计 | 交互设计 | 界面设计 博晖公司拥有强大的自主研发实力&#xff0c;建立了专业的研发团队&#xff0c;通过不断的技术创新&#xff0c;形成了分子诊断、免疫诊断、原子吸收、原子荧光及质谱五大技术平台&#xff0c;并成功…

ESP8266显示gif动态图,使用U8g2库

一.代码 #include <U8g2lib.h> //实现gif火柴人跑步动画// 定义GIF动画的帧数据 const unsigned char frame1[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0…

安装docker服务及docker基本操作

一、docker安装&#xff08;yum安装&#xff09; 基于centos7 1.添加docker-ce 源信息 安装依赖包&#xff08;yum-utils 提供了 yum-config-manager &#xff0c;并且 device mapper 存储驱动程序需要device-mapper-persistent-data 和 lvm2&#xff09; yum install yum-…

阿丹千问V1.5-迭代升级-使用人工智能提炼文字-java代码生成流程图-百度千帆大模型

阿丹&#xff1a; 今天在学习新技的时候发现了一个可以偷懒的地方&#xff0c;在学习新的知识体系的时候需要去理解文档中的逻辑关系等等&#xff0c;那么如果有一个东西可以支持输入一段具有逻辑的文字就可以帮我提炼起其中的逻辑&#xff0c;并帮助我绘制一个流程图岂不是美哉…

Node基础--Node基础使用体验

在上一篇文章中提到我们按照好Node.js之后&#xff0c;就可以在控制台看到其版本。那么下面我们一起来看看如何使用node执行js文件代码。 (1).在本地创建一个名称为hello.js的文件&#xff0c;输入内容如下所示: console.log("helloworld");var a 1;var b 2;cons…

leetcode 118.杨辉三角

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/pascals-triangle/description/ 代码&#xff1a; class Solution { public:vector<vector<int>> generate(int numRows) {// 先开空间vector<vector<int>> v;v.…

Dockerfile推送私有仓库的两个案例

一&#xff0c;编写Dockerfile制作Web应用系统nginx镜像&#xff0c;生成镜像nginx:v1.1&#xff0c;并推送其到私有仓库。 具体要求如下&#xff1a; &#xff08;1&#xff09;基于centos基础镜像&#xff1b; &#xff08;2&#xff09;指定作者信息&#xff1b; &#xff…

driver‘s license exam train

驾考训练 driver‘s license exam 1_spencer_tseng的博客-CSDN博客 driver‘s license exam 2_spencer_tseng的博客-CSDN博客 driver‘s license exam 3_spencer_tseng的博客-CSDN博客 driver‘s license exam 4_spencer_tseng的博客-CSDN博客 car indicator light_spencer…