安装virtualenv(Scrapy)

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很有用,不过,孤还需要更多场景来体会才是。

原文地址:https://www.cnblogs.com/luo630/p/9229767.html