遇到问题:

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

  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. POI3的资料整理

    转自http://aman.cao.blog.163.com/blog/static/32951336201010823557408/ POI3的资料整理一.POI简介 Jakarta POI 是ap ...

  2. New Garbage Collector http://wiki.luajit.org/New-Garbage-Collector

    New Garbage Collector http://wiki.luajit.org/New-Garbage-Collector GC Algorithms This is a short ove ...

  3. 转!!mysql 字段 is not null 和 字段 !=null

      今天在查询数据时,查到包含一条某个时间startTime(该字段默认为null ) 为null的记录,想把它过滤,加了 startTime != null 的条件,结果记录都没了,应该用条件 is ...

  4. uchome 全局变量

    $_SC: Array ( [dbhost] => localhost [dbuser] => root [dbpw] => root [dbcharset] => utf8 ...

  5. Mybatis三剑客之mybatis-plugin

    搜索mybatis plugin并安装. 如果没有的话,就按照如下: 1. 简介     mybatis plugin作为一款优秀的mybatis跳转插件,比起free mybatis plugin插 ...

  6. java爬取网页内容 简单例子(2)——附jsoup的select用法详解

    [背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表 ...

  7. Spark Shuffle调优原理和最佳实践

    对性能消耗的原理详解 在分布式系统中,数据分布在不同的节点上,每一个节点计算一部份数据,如果不对各个节点上独立的部份进行汇聚的话,我们计算不到最终的结果.我们需要利用分布式来发挥Spark本身并行计算 ...

  8. maven运行junit用例并生成报告

    原文地址https://blog.csdn.net/hdyrz/article/details/78398964 测试类如下: [java] view plain copypackage com.mm ...

  9. Qt编译出错:“Cannot find file...... .pro."

    刚接触Qt,使用Qt5.7时,出现如下编译错误: 其实原因很简单,就是Qt工程目录不能有“中文”.“全角符字符”[暂时发现这两种情况].

  10. (26)SQLite集成与用法

    概述 在Cocos2d-x中,简单数据存储,可以使用UserDefault.那么如何存储大量,不规则的数据?我们可以使用SQLite数据库存储数据.SQLite是使用非常广泛的嵌入式数据库,它有小巧 ...