最近在进行个人博客迁移,因为阿里云服务和域名服务都到期了,得知腾讯云对于学生更优惠后,我选择了把博客迁移到腾讯云上,腾讯云的学生认证入口:学生认证。目前每天只有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
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。