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
#配置静态ip,否则固定ip不生效,为动态ip
BOOTPROTO=static

在这里插入图片描述

虚拟机网络改为桥接模式

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
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐