一.使用虚拟环境的原因

在使用 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

最新文章

  1. PHP文件相关的操作函数——文件操作
  2. WebDriver基本API使用(基于Java)V1.0
  3. UVA 10000 Longest Paths (SPFA算法,模板题)
  4. linux上TCP connection timeout的原因查找
  5. ps使用方法续
  6. birt报表图标中文显示为框框的解决方法
  7. 【LeetCode】2.Add Two Numbers
  8. 准备:新V8即将到来,Node.js的性能正在改变
  9. SDWebImage底层实现原理
  10. 机器学习算法总结(五)——聚类算法(K-means,密度聚类,层次聚类)
  11. 即速应用_微信小程序开发 http://www.jisuapp.cn/
  12. Confluence 6 使用一个主题到站点
  13. [转] Linux有问必答:如何修复“sshd error: could not load host key”
  14. python 全栈开发,Day21(抽象类,接口类,多态,鸭子类型)
  15. Flask-SQLAlchemy基本操作
  16. EXCEL2007出错了无法使用文档中的ActiveX 控件
  17. C# Log4net根据日志等级输出到不同文件
  18. Kafka vs RocketMQ—— Topic数量对单机性能的影响
  19. jquery validation表单验证插件。
  20. 一个最简单的使用Entity Framework 查询SQL 数据库的例子

热门文章

  1. springboot1.5.9 整合单机版redis3.2.8
  2. 常见的一些mysql多表操作收集(备份)
  3. hibernate和mybatis出现配置文件xml的文件报错Multiple annotations found at this line(转)
  4. iptables详解(2):四表五链
  5. async+队列queue.Queue()
  6. Angular的启动过程
  7. 刷题11. Container With Most Water
  8. 如何让DOS命令在新窗口打开
  9. pycharm如何关闭虚拟环境(即取消venv命令行)
  10. linux彻底干干净净完全卸载 mysql