您的位置:首页 > 运维架构 > Linux

Linux(CentOS7.2)下Python3安装配置和系统原python2共存以及Django配置搭建

2018-02-17 20:23 1226 查看

Linux下Python3安装以及Django配置搭建 

    Linux(CentOS7.2)下Python3安装配置和系统原python2共存以及Django配置搭建 。

    本次操作安装是在CentOS 7.2 minial 环境下进行。虽然原系统自带python,但本次需求使用python3 版本,需新安装配置。 本次安装必须使用的tar 包以及whl 包如下列出(其他需要包的可能在有的linux 系统中已经安装存在,暂时不列出,后面安装了再提): 
 


一、Linux下Python3的安装 

1)  安装依赖软件包 
首先需要安装一些依赖的软件包,这些包根据每个系统的不同可能有的已经
安装。 
make、gcc、zlib-devel、bzip2-devel  、openssl-devel  、ncurses-devel  、
sqlite-devel、readline-devel  、tk-devel。 
先查看本挂载的系统是否已经安装这些包。命令如下: 
# yum list make* zlib*  …… 
(1)已经安装的软件包 
 


 
(2)可安装的软件包 



 
若没有安装,则运行以下命令进行安装: 
# yum install zlib-devel.x86_64 
注:在离线情况下,本安装命令适用于已经成功挂载 CentOS  7.2 桌面完全
版iso 镜像的情况下,系统自带了这些尚未安装包(如上图“可安装的软件包”),
否则需要在线安装,或是下载包之后使用命令安装: 
# rpm -ivh zlib-devel.xxxxx.pm 
 
2)  查看系统原python版本以及备份 
centOS 7.2  默认安装的是python 2.7.5,首先使用命令: 
# which python 
来查看python 可执行文件的路径,如下图所示: 
 


进入到该目录下,使用mv 命令进行备份原python 可执行文件: 
# mv python python.bak 
 


 
3)  安装python3 
加压python3 的tgz 包,并进入其解压目录下: 
#tar  -xvzf    Python-3.6.4.tgz      (若是 Python-3.6.4.tar.xz  ,则用 tar  -xvJf 
xxxxx.tar.xz 解压) 
#cd Python-3.6.4/ 
然后配置python3 的安装路径,执行如下命令: 
# ./configure --prefix=/usr/local/python3 
 


 
如上执行完生成Makefile,没有error 表示无误,假如提示error 或是warning,
则根据error 和warning 内容安装相应缺少的包。再假如出现如下图所示错误: 
 


即: 
 


此时执行到生成config.status 时候编译异常,把config.status 拷贝出来,查看异常所在: 
 


这个编译错误不通过原因就是源包路径(ac_pwd)有特殊符号“    '    ”,这
个单引号和路径前面的单引号相匹配,结束了路径,后面的一个单引号开始了引
用,导致引号后面的语句都被改变了语句,被编译错误,最终导致源码包在
configure 配置时候报syntax error。更改源包路径即可解决此问题。 
 
configure 正常执行完成之后,就可以执行如下命令安装(前提是之前的make
安装包已安装完成): 
# make && make install 
 


成功安装之后末尾出现以上信息。 
 
4)  将默认的python2环境改为python3 
configure: creating ./config.status 
./config.status: line 476: syntax error near unexpected token `)' 
./config.status: line 476: `        *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;' 
之前第二步已经将执行目录下的python备份成python.bak,  这个时候系统是
没有可执行的python 环境,所以将刚安装配置好的python3 执行命令添加软链到
系统执行目录/usr/bin 中,命令如下: 
# ln -s /usr/local/python3/bin/python3 /usr/bin/python    (如图) 
 


这样软链就添加成功。 
测试环境安装成功与否, 
 


#python -V  (可以查看到python3 的版本) 
#python2 -V    (可以查看到python2 的版本) 
 
5)  修改yum默认编译python环境 
由于yum 编译环境使用的是默认的python 环境,且必须是python2,现在默
认的python 环境改为python3 了,所以yum 运行编译报错使用不了。 
 


这时候就需要将yum 的编译改为python2,如下命令进去: 
# vim /usr/bin/yum 
修改“#!/usr/bin/python”为“#!/usr/bin/python2”,如图: 
 


退出保存即可。yum 命令即可正常运行。 
 
6)  配置pip工具 
pip 工具在本项目用于在线或是离线安装python 的第三方库。 
在上述安装 python3 时候已经将 pip 工具安装完成,这个时候只需要将 pip
执行命令软链到系统默认执行命令中即可,如下 
# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip    (如图) 
 


二、Django安装配置以及第三方开发库安装 

1)  安装前操作 
首先安装需要的rpm 包,如下: 
sqlite-devel-3.7.17-8.el7.x86_64.rpm  、 zlib-1.2.7-17.el7.x86_64.rpm 、
zlib-devel-1.2.7-17.el7.x86_64.rpm 
先用命令  # yum list    sqlite*    zlib*  (如下图)查看本机是否已安装好,或
是挂载的系统已存在相应的rpm 软件包,若没有,则查看附件 
 


 
2)  安装Django源包 
加压Django 源包,并进去解压包路径里: 
#tar -xvzf Django-2.0.1.tar.gz 
#cd Django-2.0.1/ 
进入路径下之后执行“# python setup.py install”命令进行安装,如下: 
 


执行完成之后,会出现以下error: 
 


这是由于本安装是在离线情况下,默认没有 pytz 模块该第三方库,在线情
况下会自动搜索资源进行安装,现在离线报错,下面安装 pytz 模块以及第三方
依赖库。 
 
3)  第三方python库安装 
第三方安装库见附件。 
由于python 已经安装了pip 工具,这时候可以用pip 进行离线安装已经下载
好的whl 库,进入whl 存放路径,执行“pip install xxxxxx.whl”进行安装。 
首先安装pytz 模块,如下图所示: 
 


提示Successfully,即成功安装。 
下面安装安装与Django 配套的six(绘图库文件): 
 


 
安装连接orcal 的库文件: 
 


 
安装restful api  框架库的相关依赖库: 
 


安装HTTPie 测试restful api 工具相关依赖包: 
 


 


 
httpie 安装完之后,它的执行命令是在python 的bin 安装路径里,想在命令
行中使用http 命令,需要软链到bash 中: 
 


 
4)  测试django安装是否成功 
在python 环境下,输入以下代码: 
>>>import django 
>>>print(django.get_version()) 
 


成功打印出如上版本号,则说明成功。  
 

三、新建一个Django项目启动服务 

1)  新建前准备工作 
新建项目使用“django-admin”创建,但是bash 命令中是没有的,需要通过
软连接将其加到系统命令中。首先到django-admin 执行命令所在位置,然后通过
“ln -s    XXXXX    XXXX”,如下: 
 


软链成功后就可以使用“django-admin”创建项目了。 
 
2)  新建Django项目以及项目结构说明 
进去将要创建项目的路径里,使用“django-admin”创建项目, 
# django-admin startproject cloudDjango      ,如图: 
 


然后可以看到 cloudDjango 文件夹以及其中的文件生成,使用“tree”命令
查看该项目结构,如下: 
 


目录说明: 
  cloudDjango: 项目的容器。 
  manage.py: 一个实用的命令行工具,可让你以各种方式与该  Django  项目进
行交互。 
  cloudDjango /__init__.py: 一个空文件,告诉  Python  该目录是一个  Python 
包。 
  cloudDjango /settings.py: 该  Django  项目的设置/配置。 
  cloudDjango /urls.py: 该  Django  项目的  URL  声明,一份由  Django  驱动的
网站"目录"。 
  cloudDjango /wsgi.py: 一个  WSGI  兼容的  Web  服务器的入口,以便运行项
目。 
 
3)  启动项目 
进入到该项目目录下,输入“python manage.py runserver 0.0.0.0:8000”来启
动服务,“0.0.0.0:8000”是让其他客户端链接到服务器,8000 位端口号,如果不
输入,那么默认为“0.0.0.0:8000”,如图所示: 
 


然后在浏览器输入本地及端口号8000 即可,如下: 
 


 
 
 
 
 
 

四、创建Restful api 服务接口并测试 

1)  简单介绍Django Rest framework 
Django Rest framework 的流程大概如图所示: 
 


 
2)  配置rest_framework 
首 先 在 Django 的 setting.py 中 的 INSTALLD_APPS 中 添 加
“rest_framework”, 
 


在Django 的url.py 中为rest_framework框架的login和logout视图添加url,
如下: 
 


 
3)  新建一个app 
新建app 命令“python manage.py startapp snippets”,如下: 
 


然后可以看见snippets 目录生成: 
 


然后将该app 加入到setting.py 中的INSTALLD_APPS,如下: 
 


 
4)  创建model 
在视图model.py 中添加了一张表如下: 
 


然后开始同步到数据库中, 
# python manage.py makemigrations snippets 
# python manage.py migrate 
如图出现如下表示无误: 
 


 
5)  创建Serializer类 
Serializer 类相似于Form,作用就是从传入的参数中提取需要的数据,并且转化为JSON
格式(此时已经是字节码),同时支持反序列化到model 对象。 
在snipperts 文件夹下添加serializer.py,如: 
 


 
6)  使用Serializer 
先进入到该项目下的Django  的shell 中, 
"python manage.py shell" ,如下: 
 


向库中添加俩条数据,然后序列化之后输出数据: 
 


 
7)  使用ModelSerializer 
ModelSerializer 类似于 Django 的 modelform,可以直接关联到 models 中的表,即在
model.py 中添加ModelSerializer,如下: 
 


 
8)  在Django的视图中使用Serializer 
可以像常规的Django 视图的写法一样,返回序列化输出数据,也可以写一个视图对应
其models 中的表,实现对它的删、改、查。如下: 
 


 


 
9)  url添加 
先在snippets 下自己的url.py 中添加对应的url,如下: 
 


然后将该snippets 的urls 加入到总的urls 中,如下: 
 


 
10)  测试API 
本测试使用httpie 模块来测试,启动本项目服务,然后控制台输入: 
# http http://127.0.0.1:8000/snippets/   
如下图所示: 
 


进行put 操作,控制台输入, 
#  http  put  http://127.0.0.1:8000/snippets/1/  code='print("hello  Python  world");' 
language="python"                                                                           
 


如上图所示,可以看出,修改数据成功。 
 
进行insert 操作,在snippets 的views 中添加了一个自定义的request.method == 'INSERT'
判断方法,用于新增数据,控制台输入,如下, 
#  http  insert  http://127.0.0.1:8000/snippets/  code='print("this  is  a  test");'   
 


 


如上图所见,数据成功添加进去。 
 
进行delete 操作,控制台输入, 
# http delete http://127.0.0.1:8000/snippets/3/   
 


如上图所示,id=3 的数据成功被删除。 
 
11)  使用管理员页面对该model进行管理 
Django 框架自带管理页面,不过需要自己创建管理员用户进行登陆 
浏览器输入“127.0.0.1:8000/admin”,如下: 
 


这时是登陆不了,先为该项目创建超级用户,在该项目的目录下终端输入: 
# python manage.py createsuperuser 
 


注:创建密码时候注意不要和邮箱地址类似,也不要少于8 个字符。 
使用刚创建的用户进去,可以看到建立的model 表。可以对其进行,新增,
修改,删除。 
 


 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息