VirtualEnv 和Pip 构建Python的虚拟工作环境

简介:

(这是打算写的这个系列 http://www.v2ex.com/t/33489 的第一篇,我不会太监,毕竟这些内容本来在公司内部或多或少就会有整理,不过工作本身忙,进度快慢不能保证,各位谅解)

一 般而言,所有python相关的包会装在系统目录里,譬如/usr/lib/ 或者/usr/local/lib/,这样的话,假设两个开发分支要求的库不一样,譬如对应在线版本的开发环境使用 Django1.3,但是一个新的开发分支基于Django1.4,两者就会互相影响。

Virtualenv 是一个虚拟环境程序,可以把开发环境隔离。基本思想是建立不同的环境目录,其中装有独立的各类包,甚至也可以是独立的不同版本python程序。

1. 安装 virtualenv 和 virtualenvwrapper,后者是一套很有用的扩展,提供了方便切换开发环境的快捷命令

以下命令都是基于Ubuntu的(Mac OS 上可以参考 https://gist.github.com/1208841 )

sudo pip install virtualenv
sudo pip install virtualenvwrapper

#2 在用户的home目录下创建一个名为product的虚拟环境

export WORKON_HOME=~/envs
mkdir $WORKON_HOME
source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv --no-site-packages product #--no-site-packages 参数代表所有的Python包都从虚拟环境里找,任何时候都不去例如/usr/lib/python/这类全局环境里查找

初期用virtualenv的时候的确不需要系统的安装包,即创建一个裸环境,可以使用这个参数。



这 步完成后,就建立了一个名为product的虚拟环境目录,用workon product便能切换这个环境下,所谓切换,就是说这时候如果执行which python,就会发现现在的python不是/usr/bin/python,而是~/envs/product/bin/python,相应的所有的 第三方python依赖也都在~/envs/product/lib/python2.7/site-packages/ 下。

#3 为了偷懒,可以在bashrc里建立一个alias,譬如

alias product='source ~/.bashrc; workon product; cd ~/envs/product/src'

alias stage='source ~/.bashrc; workon stage; cd ~/envs/stage/src'

这样执行product,stage就能分别切换到相应的虚拟工作环境,同时进入工作目录。

#4 未来要装相应的库,直接用pip即可,但是要确保pip也是相应的虚拟环境里的,可以用which pip检查,譬如要装django,就可以用

pip install django

pip也可以列出当前虚拟环境里所有的依赖,可以用这个办法将所有这些依赖写入一个文件,例如

pip freeze > product.dev     ##导出已安装的包列表
如果在另外一个环境里要重新安装这些依赖,执行

pip install -r product.dev

即可


备注:virtualenvwrapper的使用:

列出虚拟环境列表

workon

也可以使用

lsvirtualenv

新建虚拟环境

mkvirtualenv [虚拟环境名称]

启动/切换虚拟环境

workon [虚拟环境名称]

删除虚拟环境

rmvirtualenv [虚拟环境名称]

离开虚拟环境

deactivate






      本文转自Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1597898,如需转载请自行联系原作者

相关文章
|
4天前
|
Shell 程序员 开发者
轻松搞定在Python中构建虚拟环境
本教程教你如何使用业界公认的最佳实践,创建一个完全工作的Python开发环境。虚拟环境通过隔离依赖项,避免项目间的冲突,并允许你轻松管理包版本。我们将使用Python 3的内置`venv`模块来创建和激活虚拟环境,确保不同项目能独立运行,不会相互干扰。此外,还将介绍如何检查Python版本、激活和停用虚拟环境,以及使用`requirements.txt`文件共享依赖项。 通过本教程,你将学会: - 创建和管理虚拟环境 - 避免依赖性冲突 - 部署Python应用到服务器 适合新手和希望提升开发环境管理能力的开发者。
|
11天前
|
Python
探索Python虚拟环境:virtualenv、venv与pipenv比较
在Python开发中,有效的环境管理至关重要。virtualenv、venv和pipenv是常用的虚拟环境管理工具。virtualenv支持Python 2.7+和3.3+,可创建独立环境;venv为Python 3.3+内置库,简单轻量但功能有限;pipenv则结合了包管理和虚拟环境管理,生成Pipfile.lock确保依赖确定性和安全性,推荐作为首选工具。
|
10天前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
15天前
|
机器学习/深度学习 Rust 算法
Python环境管理的新选择:UV和Pixi,高性能Python环境管理方案
近期Python生态系统在包管理领域发生了重要变化,Anaconda调整商业许可证政策,促使社区寻找更开放的解决方案。本文介绍两款新一代Python包管理工具:UV和Pixi。UV用Rust编写,提供高性能依赖解析和项目级环境管理;Pixi基于Conda生态系统,支持conda-forge和PyPI包管理。两者分别适用于高性能需求和深度学习项目,为开发者提供了更多选择。
55 2
|
1月前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
1月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
84 3
|
2月前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
2月前
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
133 3
|
3月前
|
Python
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
190 3
|
3月前
|
自然语言处理 搜索推荐 程序员
【Python】如何使用pip,安装第三方库和生成二维码、操作Excel
【Python】如何使用pip,安装第三方库和生成二维码、操作Excel
86 0

热门文章

最新文章