Linux基础—python虚拟环境配置

一、软件包管理

软件包是什么?

软件包顾名思义就是将应用程序、配置文件和数据打包的产物,所有的linux发行版都采用了某种形式的软件包系统,这使得linux软件管理和在windows下一样方便,suse、red hat、fedora等发行版都是用rpm包,Debian和Ubuntu则使用.deb格式的软件包。

mysql-5-3-4.rpm
redis-3-4-3.rpm
nginx2-3-2.rpm

在早期系统运维中,安装软件是一件非常费事费力的事情。系统管理员不得不下载软件源代码编译软件,并且为了系统做各种调整。

尽管源代码编译形式的软件增强了用户定制的自由度,但是在小软件上耗费精力是缺乏效率的,于是软件包应运而生。

软件包管理可以将管理员从无休止的兼容问题中释放。yum工具就可以自动搜索依赖关系,并执行安装。

1.RPM软件包管理器

软件包管理器核心功能

1.制作软件包  .rpm
2.安装、卸载、升级、查询、校验

在 RPM(红帽软件包管理器)公布之前,要想在 Linux 系统中安装软件只能采取源码包 的方式安装。早期在 Linux 系统中安装程序是一件非常困难、耗费耐心的事情,而且大多数 的服务程序仅仅提供源代码,需要运维人员自行编译代码并解决许多的软件依赖关系,因此 要安装好一个服务程序,运维人员需要具备丰富知识、高超的技能,甚至良好的耐心。而且在 安装、升级、卸载服务程序时还要考虑到其他程序、库的依赖关系,所以在进行校验、安装、 卸载、查询、升级等管理软件操作时难度都非常大。

RPM 机制则为解决这些问题而设计的。RPM 有点像 Windows 系统中的控制面板,会建 立统一的数据库文件,详细记录软件信息并能够自动分析依赖关系。

通过rpm安装mysql

mysql下载地址https://dev.mysql.com/downloads/mysql/

安装软件的命令格式                rpm -ivh filename.rpm     # i表示安装   v显示详细过程  h以进度条显示
升级软件的命令格式                rpm -Uvh filename.rpm
卸载软件的命令格式                rpm -e filename.rpm
查询软件描述信息的命令格式         rpm -qpi filename.rpm
列出软件文件信息的命令格式         rpm -qpl filename.rpm
查询文件属于哪个 RPM 的命令格式   rpm -qf filename

rpm安装软件

#下载软件包
wget https://rpmfind.net/linux/centos/7.5.1804/os/x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm

#安装软件包

[root@yugo /tmp 11:03:42]#rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:lrzsz-0.12.20-36.el7             ################################# [100%]

rpm查询软件

rpm -q lrzsz  #查询lrzsz是否安装
rpm -qi lrzsz #查询lrzsz包的说明信息
rpm -ql lrzsz #查询lrzsz包生成的文件列表
rpm -qc nginx  #查询nginx安装生成后的配置文件路径
rpm -qf /etc/nginx/fastcgi.conf  #查看这个文件由哪个rpm包安装

 rpm升级软件

rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级;否则,则安装;
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出;

rpm卸载软件

rpm -e PACKAGE_NAME
需要手动解决依赖
不如 yum remove

rpm的依赖问题

但是rpm软件包管理安装软件的时候,会产生一系列问题,比如,你安装一个软件包,而这个软件包有依赖软件,那么你需要先安装依赖软件;如果依赖的软件还有依赖软件,你不得崩溃吗?

2.软件管理yum工具

yum软件包管理器

Yum (Yellow dog Updater, Modified) 黄狗升级器是一个在 Fedora 中的字符前端软件包管理器。基于 RPM 包管理(介绍见RPM包及其管理),能够从指定的服务器自动下载 RPM 包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

软件安装的三种方式:

  • 源代码编译安装

  • 获取软件源代码

  • 手动编译安装

yum工具是红帽子才有的软件管理工具,例如suse和乌班图等系统,就没有yum

yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum(选项)(参数)
-h:显示帮助信息;
-y:对所有的提问都回答“yes”;
-c:指定配置文件;
-q:安静模式;
-v:详细模式;
-d:设置调试等级(0-10);
-e:设置错误等级(0-10);
-R:设置yum处理一个命令的最大等待时间;
-C:完全从缓存中运行,而不去下载或者更新任何头文件。

什么是yum源?

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

说到yum源就必须说到linux系统中特有的依赖关系问题,yum就是为了解决依赖关系而存在的。yum源就相当是一个目录项,当我们使用yum机制安装软件时,若需要安装依赖软件,则yum机制就会根据在yum源中定义好的路径查找依赖软件,并将依赖软件安装好。

YUM是“Yellow dog Updater, Modified”的缩写,是一个软件包管理器,YUM从指定的地方(相关网站的rpm包地址或本地的rpm路径)自动下载RPM包并且安装,能够很好的解决依赖关系问题。

YUM的基本工作机制如下

服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。 
客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

yum源的目录

#进入yum源目录
cd /etc/yum.repos.d/
#查看yum源文件
ls -l

配置阿里云yum源

linux的yum仓库目录是

cd /etc/yum.repos.d/ 

这个目录下,第一层中,所有以.repo结尾的文件,都会识别为一个yum仓库。(这个仓库就是一个url),url中提供了各种rpm包的下载,yum工具回去查找。

阿里云yum源的下载地址:https://opsx.alibaba.com/mirror

1.备份原本的yum仓库文件

cd /etc/yum.repos.d
​
#新建文件夹
mkdir  allrepo
​
#移动所有的repo文件到这个目录下,咱不用它了
mv *  ./allrepo

2.下载新的阿里云的yum仓库文件

wget -O /etc/yum.repos.d/CentOS-Base.repo   http://mirrors.aliyun.com/repo/Centos-7.repo
​
#-O  代表把Centos-7.repo  下载到指定目录,且改名

3.配置额外的第三方仓库

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

4.测试yum工具,安装一个nginx

yum install nginx -y

5.启动nginx测试访问

systemctl start nginx

7.可以通过修改nginx的index网页,直接展示复制的页面。

find / -name nginx/html/index.html

把网页源代码放进去就可以访问了。

yum工具的其他方法

  • yum repolist all 列出所有仓库

  • yum list all 列出仓库所有软件包

  • yum info 软件包名 查看软件包信息

  • yum install 软件包名 安装软件包

  • yum reinstall 软件包名 重新安装软件包

  • yum update 软件包名 升级软件包

  • yum remove 软件包名 移除软件包

  • yum clean all 清楚所有仓库缓存

  • yum check-update 检查可以更新的软件包

  • yum grouplist 查看系统中已安装的软件包

  • yum groupinstall 软件包组 安装软件包组

一、python开发之virtualenv

在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。

此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。这里,就要隆重介绍 virtualenv,一个可以帮助我们管理不同 Python 环境的绝好工具。

virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。

1.Linux环境下安装、配置virtualenv

1.用pip指定清华源下载virturalenv

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

升级pip工具命令

pip3 install --upgrade pip

2.创建目录

cd /opt/
mkdir /PyEnv
进入PyEnv中

3.创建独立运行环境-命名

virtualenv --no-site-packages --python=python3 venv1  # 得到独立第三方包的环境,并且指定解释器是python3

4.进入虚拟环境

source venv1/bin/activate  # 此时进入虚拟环境(venv)Myproject

5.安装第三方包

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.18

此时pip的包都会安装到venv环境下,venv是针对Myproject创建的。

6.退出环境命令

deactivate

virtualenv创建独立环境的原理

virtualenv是如何创建“独立”的Python运行环境的呢?

原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。

2.确保开发环境一致性

假设我们在本地开发环境,准备好了项目+依赖包环境,现在需要将项目上传至服务器,上线发布,那么就要保证服务器的python环境一致性。

在实际工作情况中,开发环境的统一是非常重要的。

解决方案

1.通过命令保证环境的一致性,到处当前windows下python环境的包。

到出的文件在users/用户名下。

pip3 freeze > requirements.txt

2.将requirements.txt文件发送给linux服务器,可通过lrzsz或scp

3.在linux中的虚拟环境中安装即可

注意切换到想要同步的虚拟环境中,执行的文件也要是相对路径或绝对路径

pip3 install -i https://pypi.douban.com/simple -r requirement.txt

windows虚拟环境中的环境迁移

windows如果也创建了虚拟环境,并且模块在虚拟环境中,想要迁移环境到linux中,

1.第一步,在windows中激活虚拟环境,在虚拟环境下
pip3 freeze >  requirement.txt 
​
2.将次文件,发送给linux服务器,可选lrzsz 或scp 
​
3.在linux中安装即可
pip3 install -i https://pypi.douban.com/simple -r requirement.txt

二、virtualenvwrapper工具

1.为什么使用virtualenvwrapper

因为virtualenv都是用户手动去安装生成,那么就可能导致如下情况,用户a新建了一个虚拟环境在/home/下,用户b生成了虚拟环境2在/opt/下,最后虚拟环境目录十分混乱,用户使用虚拟环境的时候也分不清谁是谁。

而virtualenvwrapper工具可以帮助我们,统一的管理linux中的python虚拟环境,并能够通过快捷命令的方式快速切换虚拟环境,十分方便。

但是virtualenvwrapper也存在它的问题,他能管理的是同一个python版本的虚拟环境,也就是说如果你需要同时管理python2和python3 的虚拟环境,virtualenvwrapper是无法做到的,你还是需要通过virtualenv来手动创建虚拟环境。

2.virtualenvwrapper工具的安装使用

1.安装工具

因为virtualenvwrapper工具是物理环境的python使用的包,所以安装的时候需要退出虚拟环境后执行安装命令

pip3 install -i https://pypi.douban.com/simple  virtualenvwrapper

2.配置用户个人配置文件

因为我们需要每次开机时,让系统都加载这个virtualenvwrapper工具,我们需要把这个配置写到文件中,我们知道系统变量的配置文件/etc/profile,那么用户的配置文件呢?

用户个人的配置文件,在家目录下的.bash_profile中

vim ~/.bash_profile  # 修改家目录下个人配置文件

写入如下配置

export WORKON_HOME=~/Envs  # 设置virtualenv的统一管理目录
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   #添加virtualenvwrapper的参数,生成干净隔绝的环境
export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3  # 指定python解释器
source /opt/python36/bin/virtualenvwrapper.sh  # 只有这一步,才是让这个工具生效的!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

注意在指定python解释且的时候,填写自己的python路径。

3.退出会话,重新登录,查看是否加载了virtualenvwrapper工具

ctrl + d 快速退出会话
ctrl + shift + r 快速重连会话

4.工具创建后,使用命令管理 创建虚拟环境。

mkvirtualenv  django1

操作步骤演示如下:

3.virtualenvwrapper工具几个命令

workon  # 虚拟环境的名字(支持tab补全)   #激活虚拟环境
lsvirtualenv  # 列出所有虚拟环境的目录
cdvirtualenv  # 进入已激活的虚拟环境的目录
cdsitepackages  # 进入虚拟环境下的第三方模块目录

 

posted @ 2019-06-28 21:38  ryxiong728  阅读(262)  评论(0编辑  收藏  举报