问题引起描述
- 以前建立虚拟环境都是用pycharm建立的,在虚拟环境中安装第三方模块也是通过pycharm安装的。
- 有时我也在pycharm建立的venv文件夹下,启动cmd,用pip install **来安装第三方包,以为也是安装在虚拟环境中了(这就是我遇到的坑,其实是安装在全局环境中了,因为没有激活虚拟环境)。
- 最近我又通过pycharm在虚拟环境中安装了xlwings。然后在虚拟环境中启动cmd,启动jupyter(注意我的jupyter 是安装在全局环境中)。然后我以为这就是在虚拟环境中用jupyter 了,当我用xlwings模块时,提醒我没有此模块。
原因:
- 我的jupyter安装在全局环境中,我在虚拟环境中(不管激活与否)启动jupyter,都会在全局环境中启动jupyter,对应的安装包也是全局环境的。
- 之前由于我通过cmd在虚拟环境中安装第三方包时,都没有激活虚拟环境,所以尽管是在虚拟环境文件夹中启动的cmd,安装的第三方包还是安装在了全局环境中。
通过cmd构建虚拟环境
必要性
- 在做不同项目时,所需的包也不一样,有时还有版本限制。所以为了使不同项目有各自的python版本解释器、各自的包,与其他项目的包隔绝起来,虚拟环境就显得尤为重要了。
- 项目完成时,建立的虚拟环境文件夹可以删除,而不会影响其他项目的环境。
建立虚拟环境的方法
可以通过pycharm等软件建立,也可以通过命令行窗口建立。后者更具有灵活性,下面介绍后者。
- 在需要建立虚拟环境的磁盘中建立对应的文件夹。
- 从cmd中cd到这个文件夹中。默认cmd是在c盘用户名中启动。
- cd到我新建的文件夹。运行virtualvenv myvenv。注意要安装virtualvenv模块才行,否则报错。用pip list查看已安装模块,确实没有virtualvenv。
- 如果没有安装virtualvenv,需要pip install virtualvenv -i https://douban.pypi.com/simple 安装
5. cd到我新建的文件夹中,执行 virtual myvenv,myvenv的虚拟环境就建好了。
6. cd到myvenv文件夹中的Scripts,并执行activate,就可以激活虚拟环境。激活后,虚拟环境前会有括号。如果要退出虚拟环境,执行deactivate。
7. 虚拟环境激活后,在用pip 安装或者卸载包,都是在虚拟环境中操作。
在虚拟环境中启动python的本质
虚拟环境激活后,在虚拟环境中执行python程序,使用的是虚拟环境的解释器。其实是把虚拟环境的变量放在了前面,会优先在虚拟环境中搜素。