Linux之virtualenv和virtualenvwrapper
一,介绍
在使用 Python
开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。这里,就要隆重介绍 virtualenv
,一个可以帮助我们管理不同 Python
环境的绝好工具。
virtualenv
可以在系统中建立多个不同并且相互不干扰的虚拟环境。
二,Linux下安装、配置virtualenv
- #指定清华源下载pip的包
- pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
- #升级pip工具
- pip3 install --upgrade pip
- 1.安装virtualenv
- pip3 install virtualenv
- 2.创建目录
- mkdir Myproject
- cd Myproject
- 3.创建独立运行环境-命名
- virtualenv --no-site-packages --python=python3 venv#得到独立第三方包的环境,并且指定解释器是python3
- 4.进入虚拟环境
- source venv/bin/activate#此时进入虚拟环境(venv)Myproject
- 5.安装第三方包
- (venv)Myproject: pip3 install django==1.9.8
- #此时pip的包都会安装到venv环境下,venv是针对Myproject创建的
- 6.退出venv环境
- deactivate命令
- 7.
- virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。
二、确保开发环境的一致性
- 1.假设我们在本地开发环境,准备好了项目+依赖包环境
- 2.现在需要将项目上传至服务器,上线发布
- 3.那么就要保证服务器的python环境一致性
- 解决方案:
- 1.通过命令保证环境的一致性,导出当前python环境的包
- pip3 freeze > requirements.txt
- 这将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表。
- 可以使用 “pip list”在不产生requirements文件的情况下, 查看已安装包的列表。
- 2.上传至服务器后,在服务器下创建virtualenv,在venv中导入项目所需的模块依赖
- pip3 install -r requirements.txt
三,虚拟环境之virtualenvwrapper
virtualenv
的一个最大的缺点就是:
每次开启虚拟环境之前要去虚拟环境所在目录下的 bin
目录下 source
一下 activate
,这就需要我们记住每个虚拟环境所在的目录。
并且还有可能你忘记了虚拟环境放在哪。。。
- 一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,例如/opt/all_venv/,并且针对不同的目录做不同的事。
- 使用virtualenvwrapper管理你的虚拟环境(virtualenv),其实他就是统一管理虚拟环境的目录,并且省去了source的步骤。
1,安装virtualenvwrapper
- pip3 install virtualenvwrapper
2,设置Linux的环境变量,每次启动就加载virtualenvwrapper
- 把下面两行代码添加到 ~/.bashrc文件中
- 打开文件
- vim ~/.bashrc
- 写入一下代码
- export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录
exprot VIRTUALENVWRAPPER_VIRTUALENV_ARGS="--no-site-package" #- export VIRTUALENVWRAPPER_PYTHON=/opt/python3.6.5/bin/python3 #指定python解释器
- source /opt/python3.6.5/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本
- 读取文件,使得生效,此时已经可以使用virtalenvwrapper
- source ~/.bashrc
结果如上图就行。
3,基本使用virtualenvwrapper
- 创建一个虚拟环境:
- $ mkvirtualenv my_django115
- 这会在 ~/Envs 中创建 my_django115 文件夹。
- 在虚拟环境上工作:激活虚拟环境my_django115
- $ workon my_django115
- 再创建一个新的虚拟环境
- $ mkproject my_django2
- virtualenvwrapper 提供环境名字的tab补全功能。
- 当有很多环境, 并且很难记住它们的名字时,这就显得很有用。
- workon还可以任意停止你当前的环境,可以在多个虚拟环境中来回切换
- workon django1.15
- workon django2.0
- 也可以手动停止虚拟环境
- deactivate
- 删除虚拟环境,需要先退出虚拟环境
- rmvirtualenv my_django115
常用其他命令
- lsvirtualenv
- 列举所有的环境。
- cdvirtualenv
- 导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages 。
- cdsitepackages
- 和上面的类似,但是是直接进入到 site-packages 目录中。
- lssitepackages
- 显示 site-packages 目录中的内容。
- 完整官网介绍:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html
Linux之virtualenv和virtualenvwrapper的更多相关文章
- Linux下virtualenv与virtualenvwrapper详解
在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题: 亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难. 此时,我们需要对于不同的工程使用 ...
- virtualenv与virtualenvwrapper虚拟环境
python开发之virtualenv与virtualenvwrapper讲解 在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题: 亦或者是在开发过程中不想让物 ...
- virtualenv与virtualenvwrapper讲解
#现在有个需求,我现在有两个项目,一个得运行于django1.1.11 ,还有一个版本得跑在django2.0上 python3 manage.py runserver 0.0.0.0:8000 ...
- virtualenv和virtualenvwrapper的安装与使用
环境 Windows 10 python 3.6.7 virtualenv 安装 virtualenv用于创建虚拟环境,用于隔离不同的python版本的运行,是容器类软件.这里在Windows下通过p ...
- 虚拟环境:virtualenv与virtualenvwrapper
前言: 在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题: 亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难. 此时,我们需要对于不同的 ...
- Centos7虚拟环境virtualenv与virtualenvwrapper的安装及基本使用
一.使用虚拟环境的原因 在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题:亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难.此时,我们需 ...
- CentOS 7.7+ Python3.7 下安装virtualenv和virtualenvwrapper
1. 安装virtualenv和virtualenvwrapper # pip install virtualenv # pip install virtualenvwrpper 2. 寻找virtu ...
- 聊聊 virtualenv 和 virtualenvwrapper 实践
各位 Python 的小伙伴肯定多多少少接触过 virtualenv.本文将介绍 virtualenv 以及如何更科学更优雅地使用 virtualenv. virtualenv 首先来聊一下 virt ...
- virtualenv and virtualenvwrapper on Ubuntu 14.04
In this post I’ll go over my attempt to setup virtual environments for Python development. Most Pyth ...
随机推荐
- array_map
<?php //对数组中的每个元素做函数处理 $arr = array(,,,,,); function cheng($hah){ ; } var_dump(array_map('cheng', ...
- beautifulsoup 模块
一.介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你 ...
- Java并发处理锁 Lock
在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问.本文我们继续来探讨这个问题,从Java 5之后,在 java.util.concurrent.locks 包下提供了另外一 ...
- 十篇TED点击率最高演讲,带你重新认识大数据与人工智能
我们通常过于专注于机器学习算法的实现,倾向于忽略这种技术本身的一些重要问题:如未来的应用和政治后果.在这篇文章中,我们从非常受欢迎的非营利组织TED上收集了一系列的视频(并非关注于选择什么语言或算法来 ...
- English Learning -- 0611--When Burnout Is a Sign You Should Leave Your Job
I like the following article from Harvard Business Review, as I ever experienced burnout at work. Ve ...
- twemproxy配置
redis多主从,多节点,读写分离架构. nutcracker.yml的twemproxy配置 #redis_main是twemproxy所控制redis主从集群逻辑名称 redis_main: #t ...
- Android中使用LitePal操控SQLite数据库
<第一行代码>读书手札 (一)什么是LitePal数据库 LitePal数据库是安卓的一个开源库,我们在以后的开发中,将会遇到许许多多的开源库,感谢开源社 区:因为开源社区的存在,一些我们 ...
- 修改织梦DedeCMS投票漏洞
织梦/dedecms系统我们都知道是有很多漏洞的,我在调试投票功能的时候正好要用到投票功能,这不就出现了漏洞,下面我就给大家展示如何修复这个织梦投票漏洞 首先我们打开//dedevote.class. ...
- 【HC89S003F4开发板】 2调度器
HC89S003F4开发板调度器调试 一.前言 逛论坛看到有人给HC89做了调度器,调度部分直接操作堆栈的. 下载链接 下载下来调试看看. 二.用户代码 @实现效果 编译后led灯闪烁 #includ ...
- idea的项目结构
idea项目结构: 一般是创建一个empty project,然后再创建一个个的Module.