遇到问题:

当最近的开发和部署过程中,多个服务器部署的时候发现对于库和包的管理非常混乱,主要有俩个版本问题:

  1. 因为业务需要,代码得分别部署在不同的服务器上面,每次部署的时候都得重复的安装包而且不能确定是否跟开发环境中的包版本相同
  2. 在本地环境下,不同的程序得用到不同版本的库和包,为了防止不同程序之间的混乱

所以需要对环境进行管理,才不会使开发环境和运行环境混乱。

解决问题:

最开始我尝试使用了Virtualenv,之后找到了Virtualenv的延伸工具-----virtualenvwrapper,发现这个让环境管理变的更加的容易。

功能:

  • 将所有的虚拟环境整合在一个目录下。
  • 管理(新增、移除、复制)所有的虚拟环境。
  • 可以使用一个命令切换虚拟环境。
  • Tab 补全虚拟环境的名字。

安装:

pip install virtualenvwrapper

使用:

  • 列出虚拟环境列表:workon 或者lsvirtualenv
  • 新建虚拟环境:mkvirtualenv [虚拟环境名称]
  • 启动/切换虚拟环境:workon [虚拟环境名称]
  • 删除虚拟环境:rmvirtualenv [虚拟环境名称]
  • 离开虚拟环境:deactivate

举例:

新建虚拟环境:

mkvirtualenv Test

终端会显示,虚拟环境的创建过程,创建成功后会自动进入该虚拟环境:

chenxing@Ubuntu:~/project/GamePF/s/init$ mkvirtualenv Test
New python executable in Test/bin/python
Installing setuptools, pip...done.
virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/preactivate
virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/postactivate
virtualenvwrapper.user_scripts creating /home/chenxing/.virtualenvs/Test/bin/get_env_details
(Test)chenxing@Ubuntu:~/project/GamePF/s/init$

之后可以通过上述“使用”中列出的命令进行虚拟环境的操作。

管理实践:

  最后当你建立好虚拟环境之后,可以在虚拟环境中安装自己项目所依赖的包,你所安装的包,会在你创建的虚拟环境下面,与外界的开发环境隔离开来,之后你可以通过生成requirements.txt的方式将项目所依赖的所有包以及包的版本写入该文件:

  1. 将包依赖信息写入requirements.txt中:
pip freeze > requirements.txt

   2. 之后可以将该包上传到项目版本管理工具(svn, git)中,服务器拿到代码后,通过requirements.txt进行项目包的下载:

pip install -r requirements.txt

之后如果有什么扩展包的安装,可以通过上述 第1步 和 第2步 的方式对开发环境和部署环境进行很好的管理。

Python环境管理--virtualenvwrapper的更多相关文章

  1. Linux yum的配置 , python环境管理, nginx搭建简单学习

    Linux yum的配置 , python环境管理, nginx搭建简单学习 一丶配置yum的数据仓库 ### yum 工具, 方便,自行解决软件之间的依赖关系. # 配置yum源仓库 (可以使用,清 ...

  2. Python 使用 virtualenvwrapper 安装虚拟环境

    装载于https://www.jianshu.com/p/9f47a9801329 Python 使用 virtualenvwrapper 安装虚拟环境 Tim_Lee 关注 2017.05.04 2 ...

  3. [python]使用virtualenvWrapper

    什么是virtualenv virtualenv是python的环境管理工具,用于隔离python的运行环境.也就是说,一个项目可以有一个属于这个项目的运行环境,从而避免了因为依赖不同的模块而产生的错 ...

  4. Linux 安装Python虚拟环境,virtualenvwrapper

    virtualenvwrapper工具学习 1.因为virtualenv 工具使用的并不方便 2.安装virtualenvwrapper pip3 install -i https://pypi.do ...

  5. python virtualenv virtualenvwrapper

    python中的virtualenv模块能够将项目环境分隔开,而不是使用全局的环境,非常实用. 首先pip install virtualenv 如何创建一个环境virtualenv testvir ...

  6. Django(2)python虚拟环境virtualenvwrapper

    python虚拟环境 虚拟环境(virtual environment),它是一个虚拟化,从电脑独立开辟出来的环境.通俗的来讲,虚拟环境就是借助虚拟机来把一部分内容独立出来,我们把这部分独立出来的东西 ...

  7. Virtualenv: 一个Python环境管理工具(windown版本)

    1.安装virtualenv 在安装virtualenv之前,我们需要安装至少有一个版本的python:因为virtualenv是python的一个第三方模块,必须基于python环境才能安装: 如果 ...

  8. python虚拟环境Virtualenvwrapper无法升降级虚拟环境软件解决方法

    virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够在没有权限的情况下安装新套件,不同应用可以使用不同的套件版本,套件升级不影响其他应用. Virtaulen ...

  9. Anaconda python环境管理

    1.查看conda的版本: conda --version 2. 查看当前系统安装已的python环境: conda info --envs 3. 添加python环境: conda create - ...

随机推荐

  1. Oracle HA 之 oracle 11.2 rac库配置active dataguard

    目录 configing active dataguard for 11.2 rac. 1 一.建组.建用户.配置环境变量.内核参数等... 1 二.配置共享磁盘... 3 1)创建4块共享磁盘并fd ...

  2. linux内核cdev_init系列函数(字符设备的注册)

    内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义: linux-2.6.22/include/linux/cdev.h struct cdev {    struct kobject ...

  3. 为什么 要弄清楚 mysql int(5) int(11) bigint 自建mysql主键id python random 科学计数法

    场景: 有1.2亿条问答数据,相同问题的不同答案为不同条的数据,且该表数据逐日递增: 第三方需求(不合理): 将问题.答案数据分别放入问题表.答案表: 问题表的主键为整数,在答案表中,每行数据有相应的 ...

  4. SDL结合QWidget的简单使用说明

    SDL(Simple DirectMeida Layer)是一个简单的封装媒体库,功能主要涉及了相关于OpenGL或者DirectX的显卡硬件功能和一些鼠标,键盘等外设访问.这里主要只说明一下它的渲染 ...

  5. 第1章 1.8计算机网络概述--OSI参考模型和网络排错

    OSI参考模型的网络排错: 每一层都为上一层提供服务. 如果网络出故障了,应该从底层向高层一层一层的查. OSI参考模型排错指导:(排错原则:自下而上.终极大招ping命令) 1.物理层故障: ①查看 ...

  6. (转) SpringBoot非官方教程 | 第二十四篇: springboot整合docker

    这篇文篇介绍,怎么为 springboot程序构建一个Docker镜像.docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的 ...

  7. 3.7 Templates -- Links

    一.The {{link-to}} Helper 1. 使用{{link-to}}创建一个指向route的链接: app/router.js Router.map(function() { this. ...

  8. 4.7 Routing -- Redirecting

    一.Transitioning and Redirection 从一个route调用transitionTo或者从一个controller调用transitionToRoute将会停止任何进程中的任何 ...

  9. cocos-lua基础学习(七)Scene类学习笔记

    local scene = cc.Scene:create() cc.Director:getInstance():replaceScene( scene ) cc.Director:getInsta ...

  10. Linq Query常见错误

    1.只能对 Type.IsGenericParameter 为 True 的类型调用方法 对于此错误,一般常见在虚拟实体,但是要把条件拼接在Expression中,通常是因为该字段在数据库中是可空的, ...