Linux:python安装 + 虚拟环境配置(virtualenv、virtualenvwrapper)
Python编译安装
centos7默认是装有python2的,查看python版本如下:
#检查python版本 [root@oldboy_python ~ 17:23:54]#python -V Python 2.7.5
但是python2.7不在维护,所以还是需要安装python3。
7、yum工具注意事项
如果你用yum命令,提示yum进程被锁定,无法使用时可以通过命令
ps -ef|grep yum 查看yum进程
有结果则表示另一个进程也在用yum,而yum只能有一个进程同时使用
一、安装python3
1、下载源码包
python官网网址:https://www.python.org/downloads/release/python-362/
下载地址:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
一般用第二个直接用命令下载即可
(1)我们将源码包下载到 /opt 中
# 执行以下命令,下载到 /opt 中
cd /opt yum install wget -y # 如果没有wget下载命令,安装wget命令 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
(2)安装python前的库环境,非常重要,
得保证这些依赖工具包,正确安装,必须在安装python之前安装。
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
2、解压安装源码包
下载好python3源码包之后, /opt/目录中会有压缩文件Python-3.6.2.tgz
利用 tar 命令进行解压到当前目录 /opt
tar -xvf Python-3.6.2.tgz
3、切换到源码包目录
cd Python-3.6.2
4、编译且安装python
(1)configure
这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:
./configure --prefix=/usr
上面的意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。
同时一些软件的配置文件你可以通过指定 --sys-config= 参数进行设定。有一些软件还可以加上 --with、--enable、--without、--disable 等等参数对编译加以控制,你可以通过允许 ./configure --help 察看详细的说明帮助。
这里我们是想将软件安装在 /opt/python36中,因此执行以下命令:
[root@localhost Python-3.6.2]# ./configure --prefix=/opt/python36/ # --prefix 指定软件的安装路径
安装命令:
安装之后出现makefile文件:
(2)make
这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。
如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。
make 的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能,比如 make install 一般表示进行安装,make uninstall 是卸载,不加参数就是默认的进行源代码编译。
make 是 Linux 开发套件里面自动化编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译的程序。一般情况下,他所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成。
执行命令:
[root@localhost Python-3.6.2]# make
安装:
查看安装后变化多了许多文件:
(3)make install
这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)
(只有在这一步,才会生成 /opt/python36 )
[root@localhost Python-3.6.2]# make install
查看安装之后,是否出现 /opt/python36
二、配置python系统环境变量
有两种方式配置,配置软连接,配置PATH环境变量(二选一即可),这里我们采用的是配置PATH
(1)配置软连接
方式如下:但是这里不采用该方式,因为软连接配置需要同时给编译器python3、pip3都进行配置:
ln -s 目标文件 软连接文件 ln -s /opt/python36/bin/python3.6 /usr/bin/python3 此时还没有pip ln -s /opt/python36/bin/pip3 /usr/bin/pip3
(2)配置PATH环境变量
这里采用该方式,只需要配置目录即可,两个(python3、pip3)都能用
a、查看环境变量
b、拼接环境变量
将python的路径,拼接在最前面,因为后面创建虚拟环境的时候,找解释器的顺序,是按照PATH从前往后的顺序开始查找的。
PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
c、写入全局个人配置文件 /etc/profile
编辑该文件,将拼接后的PATH变量写入最底行。
[root@localhost Python-3.6.2]# vim /etc/profile # 打开要编辑的文件,绝对路径,什么位置打开都可以,
按照下图,写入:
d、source重新读取配置文件,使其生效,并查看 $PATH是否添加成功
[root@localhost Python-3.6.2]# source /etc/profile [root@localhost Python-3.6.2]# echo $PATH
PATH中含有 /opt/python3/bin 则说明成功
三、开启一个django项目
1、在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项目。
python的linux下的虚拟环境(virtualenv、vitualenvwrapper)
在使用 Python
开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;
亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。
此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。
这里,就要隆重介绍 virtualenv
,一个可以帮助我们管理不同 Python
环境的绝好工具。
virtualenv
可以在系统中建立多个不同并且相互不干扰的虚拟环境。
一、Linux下配置 virtualenv
1、下载 virtualenv 工具
#指定清华源下载pip的包,通过清华源下载 virtualenv pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
#也可以直接下载
pip3 install virtualenv
说明: #升级pip工具,如果pip包版本太低,可以用一下方式升级 pip3 install --upgrade pip
2、创建目录,用于存放创建的虚拟环境
这里是在 /opt 中创建文件夹 myenv
mkdir /opt/myenv
cd /opt/myenv
3、进入myenv,创建虚拟环境
s15venv1为虚拟环境的名字,自己命名即可:
virtualenv --no-site-packages --python=python3 s15venv1 # 得到独立第三方包的环境,并且指定解释器是python3
解释:
--no-site-packages 这是构建干净,隔离的模块的参数
--python=python3 这个参数是指定虚拟环境以哪一个物理解释器为基础的
最后一个是虚拟环境的名字 会创建这么一个文件夹
创建过程中可以看出来,在创建虚拟解释器:
4、激活进入虚拟环境
source 之后找对创建的虚拟环境的 /bin/activate路径,进行激活:
source /opt/myvenv/s15venv1/bin/activate #此时进入虚拟环境(venv)Myproject,并激活
激活虚拟环境的原理就是修改了PATH变量,path的执行是有顺序的
echo $PATH 检查环境变量
which python3
which pip3 检查虚拟环境是否正常
5、退出虚拟环境
deactivate
6、小测试:测试安装2个虚拟环境,s15venv1,s15venv2,并且运行2个django不同版本的项目
按照同样的方式,创建虚拟环境s15venv2,并激活,
(1)开启两个会话窗口,分别下载不同的django版本:
(2)查看下载的版本
(3)分别新建django项目,
django-admin startproject mysite1 #项目名分别是 mysite1 mysite2
注意修改settings.py的Allow_HOSTS=["*"],windows方可访问linux的django项目
(4)运行该项目
python3 manage.py runserver 0.0.0.0:8000
二、Linux下配置 virtualenvwrapper
virtualenv
的一个最大的缺点就是:
每次开启虚拟环境之前要去虚拟环境所在目录下的 bin
目录下 source
一下 activate
,这就需要我们记住每个虚拟环境所在的目录。
并且还有可能你忘记了虚拟环境放在哪。。。
- 一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,例如/opt/all_venv/,并且针对不同的目录做不同的事。
- 使用virtualenvwrapper管理你的虚拟环境(virtualenv),其实他就是统一管理虚拟环境的目录,并且省去了source的步骤。
1、安装虚拟环境管理工具virtualenvwrapper
安装这个命令,必须是在物理解释器下执行(非virtualenv环境中),注意:
pip3 install virtualenvwrapper
注意,请看这里
注意,请看这里
注意,请看这里
注意,path的配置,需要将物理解释器的python3,放在path最前面,这样在创建虚拟环境的时候,解释器才会根据虚拟环境的不同而不同,否则都是在物理环境中
# 查看PATH
[root@localhost ~]# echo $PATH /opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
2、设置linux的环境变量,每次开机就加载这个 virtualenvwrapper 工具
修改 ~./bashrc 文件
vim ~/.bashrc #vim编辑用户家目录下的.bashrc文件,这个文件是用户在登录的时候,就读取这个文件 #export 是读取shell命令的作用 #这些变量根据你自己的绝对路径环境修改
# 将以下语句添加到该文件中: 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安装脚本
在文件中添加如下:
3、使文件生效,就可以使用virtualenvwrapper
方式一:需要重新登录使得该配置生效
logout # 退出 ssh root@... # 重新登录,读取 ~/.bashrc 文件,使得配置生效
方式二:直接读取文件生效
source ~/.bashrc
4、virtualenvwrapper基本命令使用
(1)创建虚拟环境,在~/Envs/目录中,因为前面文件的配置是该目录。
mkvirtualenv chen_env1 # 这会在 ~/Envs 中创建 chen_env1 文件夹。 mkvirtualenv chen_env2 # 创建第二个虚拟环境
(2)激活虚拟环境
workon # 展示该linux中所有的虚拟环境,停止当前的环境,在多个虚拟环境中来回切换 workon chen_env1 # 激活并进入该虚拟环境,通过which python3来查看是否进入成功
workon chen_env2
(3)停止退出虚拟环境
deactivate # 退出虚拟环境
(4)删除虚拟环境
rmvirtualenv # 删除虚拟环境
(5)其他常用的命令
lsvirtualenv # 列举出所有的虚拟环境 cdvirtualenv # 进入当前已激活的虚拟环境所在的目录,比如说这样您就能够浏览它的 site-packages cdsitepackages # 进入当前激活的虚拟环境的,python包的目录,也就是直接进入到 site-packages 目录中。
# pip3 安装的软件包都在 site-packages 中 lssitepackages # 显示 site-packages 目录中的内容 完整官网介绍:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html
确保本地开发环境和线上一致性的操作
1.假设我们在本地开发环境,准备好了项目+依赖包环境 2.现在需要将项目上传至服务器,上线发布 3.那么就要保证服务器的python环境一致性
解决方案: 1.通过命令保证环境的一致性,导出当前python环境的包 pip3 freeze > requirements.txt
这将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表。 可以使用 “pip list”在不产生requirements文件的情况下, 查看已安装包的列表。 2.上传至服务器后,在服务器下创建virtualenv,在venv中导入项目所需的模块依赖 pip3 install -r requirements.txt