一、centos7安装python3
1、下载python3的源码包
下载地址:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
cd /opt 进入/opt目录,一般安装的软件都放在此目录下
[root@localhost opt]# wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
下载完成,如下图:
2、安装python前的库环境,非常重要
安装python3之前,解决环境依赖,提前安装好这些软件包,日后就不会出现很多坑。
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
3、解压缩源码包
下载好python3源码包之后,解压缩
[root@localhost opt]# tar -xvf Python-3.6.2.tgz
完成后查看,如下:
进入Python-3.6.2目录
[root@localhost opt]# cd Python-3.6.2
4、编译且安装
1)释放编译文件makefile,这个makefile就是用来编译安装的,为下一步的编译做准备,可以通过在 configure 后加上参数来对安装进行控制
[root@localhost Python-3.6.2]# ./configure --prefix=/opt/python36/
上条命令的意思是将该软件安装在 /opt/python36/ 下面,执行文件会安装在 /opt/python36/bin(而不是默认的/usr/local/bin),资源文件就会安装在 /opt/python36/share(而不是默认的/usr/local/share)。
同时一些软件的配置文件你可以通过指定 --sys-config= 参数进行设定。有一些软件还可以加上 --with、--enable、--without、--disable 等等参数对编译加以控制,你可以通过允许 ./configure --help 察看详细的说明帮助。
上条命令执行结果产生了Makefile文件,如下图:
2)make
[root@localhost Python-3.6.2]# make
这一步就是编译,大多数的源代码包都经过这一步进行编译.
make 的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能,比如 make install 一般表示进行安装,make uninstall 是卸载,不加参数就是默认的进行源代码编译。
make 是 Linux 开发套件里面自动化编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译。一般情况下,他所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成。
3)make install(在这一步,会生成/opt/python36)
[root@localhost Python-3.6.2]# make install
这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。
上述3步完成后,/opt/python36/bin目录下就有了python3.6和pip3.6,如下:
5、配置python3.6的环境变量
[root@localhost ~]# echo $PATH 查看环境变量
在上面的输出结果(假设为/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)之上加入路径/opt/python36/bin,再重新赋给变量PATH,即
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin
这个变量赋值操作,只是临时生效,需要写入到/etc/profile文件,才能永久生效
[root@localhost ~]# vi /etc/profile
在文件最后写入
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin
保存退出
[root@localhost ~]# source /etc/profile 读文件,使得环境变量生效
注意:也可以通过配置软链接代替此过程,但是上述过程较好,因此软链接方法不作过多介绍。
6、在linux上开启一个django项目
1)下载django
[root@localhost ~]# pip3 install django
[root@localhost ~]# pip3 list 查看有哪些python包
2)创建django项目(注意所在目录,会在命令执行时的目录下生成项目)
[root@localhost opt]# django-admin startproject mysite
3)创建应用app01
[root@localhost opt]# cd mysite
[root@localhost mysite]# python manage.py startapp app01
4)编写视图函数
5)修改配置文件settings.py的ALLOW_HOSTS参数
[root@localhost mysite]# vi ./mysite/settings.py
将settings.py中的ALLOW_HOSTS=[] 改为 ALLOW_HOSTS=['*']
6)开启django服务器
[root@localhost mysite]# python manage.py runserver 0.0.0.0:8000
此时,打开windows浏览器,输入服务器的ip(服务器对外ip,而非上面的0.0.0.0)和端口号8000即可访问django项目。
7、yum工具注意事项
如果你用yum命令,提示yum进程被锁定,无法使用时可以通过命令
ps -ef|grep yum 查看yum进程
有结果则表示另一个进程也在用yum,而yum只能有一个进程同时使用
二、Linux下安装、配置virtualenv
在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本库的问题;或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。
这里,就要隆重介绍 virtualenv,一个可以帮助我们管理不同 Python 环境的绝好工具。
virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。virtualenv 就是一个虚拟解释器,是基于物理环境下的python解释器虚拟/分身出的解释器 。
1、通过物理环境的pip下载virtualenv工具
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
参数 -i 指定清华源下载pip的包,下载后linux中就多了一个virtualenv命令,如下:
2、创建一个虚拟环境
[root@localhost opt]# virtualenv --no-site-packages --python=python3 s15venv1
参数解释:
--no-site-packages 这是构建干净,隔离的模块
--python=python3 这个参数是指定虚拟环境以哪一个物理解释器为基础的
s15venv1 这个是一个是虚拟环境的名字,当前目录下会创建这么一个文件夹
3、进入虚拟环境目录,激活虚拟环境
找到虚拟环境目录下bin目录下的activate文件
[root@localhost opt]# source ./s15venv1/bin/activate 激活虚拟环境
(s15venv1) [root@localhost opt]# echo $PATH 检查环境变量
(s15venv1) [root@localhost opt]# which python3 检查虚拟环境的解释器是否正常
(s15venv1) [root@localhost opt]# which pip3 检查虚拟环境的解释器是否正常
激活虚拟环境,原理就是修改了PATH变量,path是有顺序执行的。
4、在虚拟环境中安装django
(s15venv1) [root@localhost opt]# pip3 install django==1.11.11
(s15venv1) [root@localhost opt]# pip3 list 查看是否安装成功
(s15venv1) [root@localhost opt]# django-admin startproject mysite1 创建django项目
编辑配置文件settings.py文件中的ALLOW_HOSTS参数
(s15venv1) [root@localhost opt]# vi ./mysite1/mysite1/settings.py
启动服务器
(s15venv1) [root@localhost opt]# python ./mysite1/manage.py runserver 0.0.0.0:8000
使用浏览器访问服务器即可
(s15venv1) [root@localhost opt]# deactivate 退出虚拟环境
三、确保开发环境的一致性
假设我们在本地开发环境,准备好了项目+依赖包环境,现在需要将项目上传至服务器,上线发布,那么就要保证服务器的python环境一致。解决方案如下步骤:
1、通过命令导出开发环境依赖的包
(s15venv1) [root@localhost opt]# pip3 freeze > requirements.txt
上面命令将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及各自版本的简单列表。可以使用 “pip list”在不产生requirements文件的情况下, 查看已安装包的列表,如下:
2、将产生的requirements.txt文件传至(可以使用scp命令)生产环境的服务器,在服务器下创建virtualenv,在venv中导入项目所需的模块依赖
(prodEnv) [root@localhost opt]# pip3 install -r requirements.txt
上面命令执行后会在生产服务器对应项目的虚拟环境中导入与开发环境中相同的且版本一致的依赖包。
四、虚拟环境之virtualenvwrapper
virtualenv 的一个最大的缺点就是:每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate,这就需要我们记住每个虚拟环境所在的目录,并且还有可能你忘记了虚拟环境放在哪。
一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,例如/opt/all_venv/,并且针对不同的目录做不同的事。
另一种是使用virtualenvwrapper管理你的虚拟环境(virtualenv),其实他就是统一管理虚拟环境的目录,并且省去了source的步骤。下面详细介绍此方法的使用步骤:
1、安装virtualenvwrapper
pip3 install virtualenvwrapper
注意:此命令必须得在物理解释器下执行,不要在虚拟环境下
2、设置Linux的环境变量,每次启动就加载virtualenvwrapper
确保/etc/profile文件的环境变量PATH中,物理解释器的python在最前面,如下图所示:
把下面几行代码添加到 ~/.bashrc文件中
vim ~/.bashrc 打开用户家目录下的隐藏文件.bashrc,在文件最后写入下面代码
export WORKON_HOME=~/Envs # 设置virtualenv的统一管理目录,用户家目录下产生Envs目录
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
# 上一行表示添加virtualenvwrapper的参数,生成干净隔绝的环境
export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 # 指定python解释器
source /opt/python36/bin/virtualenvwrapper.sh # 执行virtualenvwrapper安装脚本
执行下面命令,读取文件,使得上面代码生效,然后就可以使用virtalenvwrapper工具了
source ~/.bashrc
或者也可以重新登录会话,使得配置生效,如下:
3、virtualenvwrapper工具基本使用
mkvirtualenv env1 # 自动下载并创建虚拟环境env1,且激活此虚拟环境
workon env1 # 激活虚拟环境env1,输入workon tab键可查看当前有哪些虚拟环境
deactivate # 退出虚拟环境
rmvirtualenv env1 # 删除虚拟环境 env1,需要先退出虚拟环境
4、其他常用命令
lsvirtualenv # 列举所有的环境
cdvirtualenv # 进入当前已激活的虚拟环境所在的目录
cdsitepackages # 进入当前激活的虚拟环境的,python包的目录
lssitepackages # 显示 site-packages 目录中的内容。
完整官网介绍:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html
5、pycharm下创建虚拟环境
参考博客:https://www.cnblogs.com/pyyu/p/9015317.html
五、vim
参考博客:https://www.cnblogs.com/pyyu/p/9460649.html
六、其他
yum install wget -y 安装wget命令