最近想学习Scrapy框架,于是就有了一连串的问题,我看了开源中国的scrapy文档他建议用虚拟环境安装,而不是全局安装(直接安装在python中),他给的原因:
我们建议在所有平台上的虚拟环境中安装scrapy。
Python包可以全局安装(也称为系统范围),也可以安装在用户空间中。我们不建议在系统范围内安装Scrapy。
相反,我们建议您在所谓的“虚拟环境”中安装Scrapy (venv ). 虚拟环境允许您不与已经安装的Python系统包发生冲突(这可能会破坏您的一些系统工具和脚本),并且仍然可以使用 pip (没有) sudo 诸如此类。
一旦您创建了一个虚拟环境,就可以使用 pip 就像其他的python包一样。
总结来讲的话:
Scrapy 是用纯python编写的,它依赖于几个关键的python包(以及其他包):
lxml ,parsel ,w3lib,twisted ,cryptography 和 pyOpenSSL 但是lxml我之前已经安装过了,Scrapy可以与这些软件包的旧版本一起工作,但不能保证它会继续工作,可能会发生冲突。
每个虚拟环境中安装的第三方模块不会与其它环境中同名的第三方模块发生版本冲突,每个虚拟环境之间互不影响。通过为每个项目创建单独的虚拟环境,来避免第三方模块发生版本冲突的现象。
比如你做一个django项目使用的是python3.6版本,但是你另一个项目需要使用python3.7版本,为了避免冲突,你就可以新建一个独立的python虚拟环境,专门用来做使用python3.6版本的项目。
因为在原来的项目里我用了本地python的环境(主要项目切换环境不太会没成功),所以就新建一个项目在新项目上面配置虚拟环境。

这里没什么选择的,可能你的新项目需要不同的python版本,在第三步那里自行选择,这里选择的只是基础的解释器版本,不包含其他第三方包(即使之前你安装了)创建好了之后去设置里面看一下有哪一些包

图上可以看到包是安装在项目文件里面的,并不是在python里面,恰好说明了虚拟环境是区别于本地环境的(这对我来说是很好的,因为我怕安装Scrapy之后会发生模块之间的冲突,虚拟环境刚好,只存在于这个项目中(配置时好像可以选择给其他项目使用),不受其他的干扰),可以看到包只是基础的包没有我之前安装的很多包
去看一下是否进入到(激活)虚拟环境中(一般单独创建项目,terminal都会指向当前环境)
在这里可能会有一个小问题导致进不了虚拟环境(一打开termi就会显示有错误):

解决方法: win+x 以管理员方式运行powershell
输入: set-executionpolicy remotesigned,接下来输入“y”表示执行。

之后重新打开IDEA中的Terminal即可解决.

前面有这个头就表示可以了,写代码还是跟以前差不多,只不过把包放到了项目文件中(多了个venv文件)
还是回到刚才的设置里,他既然是在项目文件里我想直接删除对应的venv文件就是了,但是我看其他的博文说还要在软件里删除一下

点击之后

可以看到第一个就是我们创建的虚拟环境(第二个是本地的python环境),选中它点击减号就可以了
我觉得用虚拟环境最好的一点就是:那一些项目需要所下载的包,跟着项目的,把整个项目删除的话,对应这个项目所下载的包也会没有了,(因为小白是不断向上学习高级的东西的),那么包会越来越多,用虚拟环境可以用完就丢(比如刚开始用urllib后面用requests再到框架,可能前面的就不用了)