工欲善其事必先利其器,我们在python开发过程中经常会碰到以下问题:
两个python程序,一个需要Flask1.1版本,另一个需要Flask1.2版本,这时候你怎么办?
当你开发某个程序而更新了系统里面python默认路径下的某些库,从而导致其他Python程序可能用不了了。
使用云主机时候,你没有root权限,你是写不了文件进Python的默认文件夹的。
这时候我们怎么办?
使用virtualenv
,它能够创建一个虚拟环境,隔离系统的python环境,单独提供项目所需库。它会在项目根目录下创建一个文件夹,然后把系统的默认的python复制过来,并且该项目的所有第三方库都将安装到这个文件夹下面,这样就有了隔离的环境。
安装
推荐使用pip安装
pip install virutalenv
操作
安装完成后我们来到项目的根目录下执行:
virtualenv venv
这样我们便创建了一个venv文件夹,里面存了Python的副本,以后我们安装第三方库都会自动安装到这个文件夹里面。
当然,创建文件夹后,我们还得激活这个Python虚拟环境:
windows:
venv\Scripts\activate.bat
Linux/Mac:
source venv/bin/activate
此时,就进入了一个隔离的环境,安装,卸载和使用模块,都会在venv环境中,而不会影响系统和其他环境。
激活后可以看到终端的界面当前目录被加了venv
的字段:
(venv) zyptekiiMac:test zyp$
这样就代表以及进入虚拟环境了,我们在这个环境内使用pip安装的包都将被安装到venv文件夹下面,感兴趣的同学可以点开目录看看。
另外如果不想使用系统的包,加上–no-site-packeages参数
virtualenv --no-site-packages venv
使用这个是因为有时候系统已经含有某些包,这时候你使用pip安装就会默认使用系统的库,你就和系统使用同样的库了,有可能你的项目会受影响,所以我建议大家都使用这样方式去完全独立虚拟环境,避免受到干扰。
另外还有一点,我们在这个公司电脑上安装了某些库,回到家后要重新运行该项目,你难道又要我重新一个一个的安装一遍吗?这不可能的,这辈子都不可能的。
我们使用如下命令,把pip安装的库都写到一个文件中
pip freeze > ./requirement.txt
然后我们看看这个文件内容:
click==6.7
dominate==2.3.1
Flask==1.0.2
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
visitor==0.1.3
Werkzeug==0.14.1
这样就自动帮我们把要求的库的名字、版本号都写入到文件中了,回到家中你只要执行:
pip install -r ./requirement.txt
pip就会自动帮你循环安装requirement.txt文件中指定的库。
最后退出虚拟环境:
deactivate