(转)windows上使用pyvenv进行项目隔离

最近在进行个人博客迁移,因为阿里云服务和域名服务都到期了,得知腾讯云对于学生更优惠后,我选择了把博客迁移到腾讯云上,腾讯云的学生认证入口:学生认证。目前每天只有200个名额,需要的童鞋手要快。由于博客迁移一次,就要安装一次相应的库,有的时候并不知道自己项目中装了些啥三方库,所以只有边试错边部署,很费精力,所以便萌生了使用pyvenv构建虚拟目录进行部署项目。

查阅了网上的一些资料发现,很多都是基于linux平台的,基于windows平台的特别少。所以我打算把过程记录下来。方便自己,也方便他人。

python3.4开始,就已经自带了pyvenv,我使用的是python3.5。如果版本低于3.4,可以使用pip安装virtualenv这个库,它们用法基本一致。

先切换到你需要放置项目的目录,然后在命令行中使用pyvenv新建虚拟环境:

python -m venv test

这个命令执行完成之后,当前目录会新建一个名为test的目录,里面就是虚拟环境。

激活虚拟环境,需要先切换到 test/Scripts/目录下,执行activate.bat这个批处理,这个就和linux有所区别:

cd test/Scripts

activate

激活虚拟环境后的命令行,最前面会出现项目名称, 比如下面:

(test) C:\Users\Administrator\test\Scripts>

虚拟环境中的python并没有安装扩展库(pip除外),我们通过pip在虚拟环境中安装的任何扩展库都只对当前虚拟环境(test)有效,对真实的环境和别的虚拟环境都没有效。比如我们继续执行以下命令安装requests库:

pip install requests

然后导入它:

import requests

这个是可以运行的。如果我们的真实环境没装requests的话,我们使用这条命令就会报错。换句话说,就是虚拟环境和真实环境、还有别的虚拟环境都各不影响。

激活虚拟环境后可以安装各种库,执行各种操作了,怎么退出虚拟环境呢?

deactivate

这个命令不必切换到test/Scripts, 哪里都可以执行。

这里说完了虚拟环境的激活和退出,下面说说从A环境迁移到B虚拟环境怎么重建依赖的问题,这也是我自己运用虚拟环境的一个很重要的原因。

先在A环境中把所有依赖都保存到re.txt中,使用pip freeze:

pip freeze > re.txt

这时会在当前目录生成re.txt,通过记事本可以直接打开:

notepad re.txt

可以看到类似内容:

Flask==0.11.1

Flask-Login==0.3.2

Flask-SQLAlchemy==2.1

我们可以修改该文件来改变我们虚拟环境的相关依赖,比如我们不需要Flask,直接删除Flask==0.11.1即可。

这个文件怎么用呢,我们先激活B虚拟环境,然后可以一条命令安装所有依赖:

pip install -r re.txt

到此,B虚拟环境和A环境的依赖就一样了。还有一点我需要说明,有的扩展库通过pip install的方式安装可能会出现问题(比如 lxml),那么通过上面那条命令安装也会失败,这种扩展库我们只有去这里下载编译好的.whl文件进行单独安装。先在虚拟环境中安装wheel(pip install wheel),然后就可以直接用pip命令安装.whl文件了。

关于python在win平台上的虚拟环境的知识大概就如此了。

文/resolvewang(作者)

原文链接:http://www.jianshu.com/p/d01a85c8995e

著作权归作者所有,转载请联系作者获得授权,并标注“作者”。

你可能感兴趣的:((转)windows上使用pyvenv进行项目隔离)