Windows 10家庭中文版,Python 3.6.4,
virtualenv用来提供一个应用程序独立的 运行环境,这个独立是相对于系统的Python运行环境而言,开发者可以在virtualenv建立的运行环境中安装各种Python的包以及运行自己的应用程序,而这些操作都不会对系统的Python运行环境有任何影响。
本文介绍了第一次安装virtualenv的步骤,以及建立一个虚拟运行环境,并在虚拟运行环境上安装Scrapy。
参考:https://virtualenv.pypa.io/en/stable/installation/ (官文)
注意:Windows系统上会有一些特别的提示,请安考官文。
1.安装
使用pip命令:pip3 install virtualenv
在安装时范了一个错误,把virtualenv拼写错了,导致安装失败。
安装成功后,Python的目录变化:
、
Scripts下多了一个virtualenv.exe可执行程序,创建虚拟运行环境正是使用此程序。
2.建立虚拟运行环境
使用virtualenv.exe建立虚拟运行环境,首先,创建一个 空目录(或许非空目录也可以,但没试过)。
打开命令行工具,进入到空目录env0626的父目录,执行virtualenv env0626即可创建 基于目录env0626 的 虚拟运行环境:
命令执行完毕的env0626目录:
特别说明,目录下的Scripts包含了可执行程序,比如pip、easy_install等,可以用于安装Python软件,,如果操作系统是Linux等,此目录名会是bin。
3.激活虚拟运行环境
需要使用目录Scripts中的activate批处理程序,在命令行中输入activate即可。
使用python命令可以进入Python交互式命令行。
初步建立的虚拟运行环境安装的包:只有三个(就用过pip,比较熟悉)
还期待Python版本会升级到最新的3.6.5,看来并没有,说明,系统的Python解释器被拷贝到虚拟环境了。
那么,是否可以做升级呢?将虚拟运行环境的Python版本独自升级?(后续会尝试)
4.在虚拟运行环境中安装Scrapy
使用activate命令激活虚拟运行环境,在执行pip install scrapy即可——和系统环境下安装是相同的。
一下子安装了好多包啊!使用pip list查看详情!
5.在虚拟运行环境下运行Scrapy
在env0626下建立工作目录ws,再拷贝一个基于Scrapy的爬虫程序到其中:
1 # https://docs.scrapy.org/en/latest/intro/overview.html 2 3 import scrapy 4 5 class QuotesSpider(scrapy.Spider): 6 name = 'quotes' 7 start_urls = [ 8 'http://quotes.toscrape.com/tag/humor', 9 ] 10 11 def parse(self, response): 12 for quote in response.css('div.quote'): 13 yield { 14 'text': quote.css('span.text::text').extract_first(), 15 'author': quote.xpath('span/small/text()').extract_first(), 16 } 17 18 next_page = response.css('li.next a::attr("href")').extract_first() 19 print('next_page = ', next_page) 20 if next_page is not None: 21 yield response.follow(next_page, self.parse)
激活虚拟运行环境,执行爬虫程序:出错了!提升 ModuleNotFoundError: No module named 'win32api'
安装win32api也失败了:没有找到!
(env0626) D:wsenv0626ws>pip install win32api
Collecting win32api
Could not find a version that satisfies the requirement win32api (from versions: )
No matching distribution found for win32api
原来是要安装pywin32啊!用了9MB的流量呢!
(env0626) D:wsenv0626ws>pip install pywin32
Installing collected packages: pywin32
Successfully installed pywin32-223
此问题的参考链接
再来执行爬虫程序:
这次成功了,结果保存在了quotes.json文件中。
6.后记
除了activate命令,还有一个deactivate命令,作用和activate命令相反,用于 删除虚拟运行环境。不过,这个命令有必要吗?孤直接删除虚拟运行环境不是很好?
上面在虚拟运行环境下使用pip安装时,好多程序都是网上下载的,浪费流量啊,那么,是否可以从系统Python环境中直接拷贝呢?
有个异常,在虚拟运行环境执行exit命令后,命令行窗口就退出了,预期不是应该返回到命令行窗口的吗?
virtualenv官文中还有不少 详细内容,请查看并dig。
之前在学习Flask时遇到过virtualenv,但没有用文档记录,这次Scrapy再次遇到了,那就记录下吧,好像这个virtualenv很有用,不过,孤还需要更多场景来体会才是。