前言
有的时候因为各种原因,在操作系统下,我们会安装很多版本的Python解释器。同样,我们也有可能因为各种原因,需要不同版本的模块,比如Django1.8,Django1.11。再加上pip工具管理器的版本混乱问题。这就使得很多人在Python的环境管理上产生极大的混乱。
通常每个项目,甚至项目不同阶段的版本,需要不同的Python解释器和依赖库。为了清晰明了,安全可靠的管理这些环境,需要为每个项目或每个应用各自建立一套“独立、隔离”的Python运行环境。
virtualenv就是用来为每一个项目创建一套“独立隔离”的Python运行环境的工具。
特别提醒:如果安装了多个 Python 版本且重命名了 python.exe(如python27.exe、python36.exe),那么在执行 pip2.7 或 pip3.6 会报致命错误!解决办法是修改对应的 pip.exe 文件中调用 python 的路径(如将c:\python36\python.exe修改为c:\python36\python36.exe)。
安装virtualenv
以windows操作系统为例,要安装virtualenv,建议直接使用当前环境变量下指定的pip,也就是你操作系统默认的那个python版本所绑定的pip,这样方便命令调用。通常如下:
pip install virtualenv
可以在命令行界面中验证安装:where virtualenv
建立虚拟环境
在命令行执行:virtualenv –p "真实python解释器可执行程序" –-no-site-packages "虚拟python环境完整路径",如:
virtualenv –p C:\Python35\python.exe –-no-site-packages E:\CMDB_Vir
提示:若添加了Python环境变量,则-p参数可直接写python。--no-site-packages非必须。
-p: 指定你要虚拟的Python版本,这里选择了本地的python3.5;
–-no-site-packages:表示在建立虚拟环境时不将原版本中的第三方库拷贝过来,这样就能获得一个纯净的Python环境;(新版virtualenv好像改为"--clear"了 ?)
E:\CMDB_Vir:表明在该目录下,建立一个叫做"CMDB_Vir"的虚拟环境。
使用虚拟环境
强烈建议将新建的虚拟环境中的 python 添加到系统环境变量中!
命令行下,进入你要使用的虚拟环境的目录下的script文件夹,运行 activate命令。或者使用绝对路径的方式调用该命令。
必须注意命令提示符的开头(CMDB_Vir),它表示你当前在CMDB_Vir这个虚拟环境内。现在,你可以当做一个正常的Python环境使用。例如运行python命令,又或者使用pip安装第三方库pip install requests。这些都被限制和绑定在CMDB_Vir这个虚拟环境内,不会对操作系统下本地的Python版本和其它的虚拟环境产生任何的影响!
新建Django工程:
1.在虚拟环境中,安装Django库:pip install django==1.11
2.在虚拟环境中,进入虚拟环境目录,新建Django工程:(1) cd E:\CMDB_Vir (2) django-admin startproject djweb
3.用PyCharm打开Django工程根目录:(1) 需要手动设置选择虚拟环境Python解释器 (2) 新建app:python manage.py startapp webapp
温馨提示:
如果是拷贝的Django项目,且包含了 requirements.txt 文件,可以一键安装所需模块。进入虚拟环境,然后:
pip install -r requirements.txt #注意是requirements.txt的完整路径或相对路径
留意:执行以上命令的前提是,已使用命令 "pip freeze > requirements.txt" 把项目环境的依赖库信息导出到 requirements.txt 文件里了。
退出虚拟环境
要退出虚拟环境,只要运行script目录下的 deactivate 命令就可以了。
删除虚拟环境
要删除虚拟环境,直接删除虚拟环境所在的目录就可以了,注意不要将其它的环境给删了。但是,删除虚拟环境后,所有以前使用该环境的工程都将受到影响。这点很好理解,所以请确保环境不再有需要再删除!
linux操作系统下的使用
创建虚拟环境: $ virtualenv -p /usr/bin/python3.5 –-no-site-packages /my_venv
启动虚拟环境: $ source /my_venv/bin/activate
退出虚拟环境: $ deactivate
删除虚拟环境: $ rm –rf my_venv
Pycharm使用虚拟环境
因为Pycharm集成了 virtualenv 等虚拟环境工具,故可通过Pycharm帮助创建Python虚拟环境,只需要在设置中指定基本Python解释器进行创建。(不太明白?点这里)
虚拟环境迁移
注意事项:直接将虚拟环境复制到另一台机器,直接执行是会有问题的。
那么可以采用以下办法。
思路:将机器1虚拟环境下的所有模块打包,复制到机器2上进行安装。有两种情况要考虑,机器2无网络和有网络情况(无网,证明无法在线安装包,那么就需要将机器1模块整体打包成".whl",然后到机器2安装;有网情况,只需将模块信息导出,然后到机器2上在线安装)
机器1:
1.首先在cmd命令行下,激活虚拟环境;
2.在项目目录下新建一个whl文件夹(用来存储我们依赖包)然后在虚拟环境cmd命令下切换到whl目录执行pip freeze>requirements.txt;
3.机器2无网络的情况下,先在机器1上将包下载到whl目录下(有网也可以用此方法,这样可以减少在机器2下载安装包时间)。在whl目录下执行虚拟环境cmd命令 pip download -d . -r requirements.txt (注意--download后边的点,代表是下载到当前目录,并且requirements.txt存在于当前目录中,否则会报错);
机器2:
1.新建虚拟环境,并将项目目录放入该虚拟环境中;
2.激活虚拟环境;
3.虚拟环境cmd命令进入机器1复制过来的项目下whl目录,并执行安装命令。
1)有网情况通过requirements.txt包信息安装:pip install -r requirements.txt
2)无网情况通过机器1下载的包安装:pip install --no-index --find-links=. -r requirements.txt (注意命令中的.点 代表是当前目录也就是whl目录,也是下载的包和requirements.txt所在目录)
以上步骤完成后,就可以在机器2正常使用虚拟环境了。
至此,转载请注明出处。