Centos7虚拟环境virtualenv与virtualenvwrapper的安装及基本使用
一.使用虚拟环境的原因
在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。这里,就要使用 virtualenv与virtualenvwrapper来解决这个问题,一个可以帮助我们管理不同 Python 环境的绝好工具。virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。
二.virtualenv安装与使用
1.安装virtualenv
#指定清华源下载pip的包(-i 后面为清华源)
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
#也可以直接使用命令
pip3 install virtualenv
#(如果提示pip版本太旧可以使用)升级pip工具
pip3 install --upgrade pip
2.virtualenv使用方法
(1)创建目录
mkdir Myproject
cd Myproject
(2) 创建独立运行环境-命名
virtualenv --python=/usr/bin/python3 demo1
#得到独立第三方包的环境,并且指定解释器是python3
(3)进入虚拟环境
source activate
#此时进入虚拟环境(venv)Myproject
4.安装第三方包
(venv)Myproject: pip3 install django==2.2
#此时pip的包都会安装到venv环境下,venv是针对Myproject创建的
5.退出venv环境
deactivate命令
6.
virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。
7.安装最简单的django项目
# mysite2为项目名
django-admin startproject mysite2
python3 manage.py startapp app01 #app01为app名称
修改下settings.py
ALLOWED_HOSTS = ["*"]
# centos7需要开启web端口
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload
python manage.py runserver 0.0.0.0:8000
三.virtualenvwrapper安装与使用(推荐)
virtualenv 的一个最大的缺点就是:
每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate,这就需要我们记住每个虚拟环境所在的目录。
一种可行的解决方案是,将所有的虚拟环境目录全都集中起,并且针对不同的目录做不同的事。
使用virtualenvwrapper管理你的虚拟环境(virtualenv),其实他就是统一管理虚拟环境的目录,并且省去了source的步骤。
1.安装virtualenvwrapper
# 安装
pip3 install virtualenvwrapper
# 配置全局变量
[root@hsz Myproject]# find / -name virtualenvwrapper.sh
find: ‘/proc/70508’: No such file or directory
/usr/local/python3/bin/virtualenvwrapper.sh
[root@hsz Myproject]# vi ~/.bashrc
# 添加内容
# 虚拟环境的保存目录
WORKON_HOME=~/Envs
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
source /usr/local/python3/bin/virtualenvwrapper.sh
# 使之生效
source ~/.bashrc
也可以:
vi ~/.bash_profile
写入以下几行代码(export可以先去掉) export WORKON_HOME=~/Envs # 设置virtualenv的统一管理目录, 以后自动下载的虚拟环境,全部都放在这 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # 添加virtualenvwrapper的参数,生成干净隔绝的环境 export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3 # 指定python解释器的本体(注意此路径随不同的linux环境改变而改变) source /opt/python34/bin/virtualenvwrapper.sh # 执行virtualenvwrapper安装脚本
2.使用virtualenvwrapper创建项目
# 创建虚拟环境demo3
# 如果使用: mkvirtualenv demo3 -p python3 (使用相应的python版本)
[root@hsz Myproject]# mkvirtualenv demo3
Using base prefix '/usr/local/python3'
New python executable in /root/Envs/demo3/bin/python3.6
Also creating executable in /root/Envs/demo3/bin/python
Installing setuptools, pip, wheel...
done.
# 查看有哪些虚拟环境
(demo3) [root@hsz Myproject]# workon
demo3
# 进入demo3虚拟环境
(demo3) [root@hsz Myproject]# workon demo3
(demo3) [root@hsz Myproject]# ls
demo1 demo2 mysite
# 安装django == 后面表示版本
(demo3) [root@hsz]# pip3 install django==2.2
# 创建django项目
(demo3) [root@hsz Myproject]# django-admin startproject mysite3
(demo3) [root@hsz Myproject]# ls
demo1 demo2 mysite mysite3
# mysite3 下的 mysite3 修改settings.py的配置,在[] 加”*”
ALLOWED_HOSTS = ["*"]
# 运行django 成功
python manage.py runserver 0.0.0.0:8000
# 注意centos7 需要开启web端口,步骤如下
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload
# 或者直接关闭firewall
## 关闭命令
systemctl stop firewalld
## 查看firewall状态
systemctl status firewalld