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