安装scrapy各种问题

来源:互联网 发布:网络课程尔雅官网 编辑:程序博客网 时间:2024/05/16 19:17

安装scrapy最简单的还是通过pip插件,叫他自己安装,因为scrapy涉及到的python库实在是太多了,依赖非常复杂,不过就算是pip插件,在安装的时候也会出现各种问题,下面介绍下本渣遇到过的几个问题:

1.首先是最恼火的Unable to find vcvarsall.bat

这个问题的原因主要是python通过环境变量找到的编译器和本机安装的版本不同。解决方法可以使用这个(前提是装过vc++,没装过的肯定要先下载):http://blog.csdn.net/zzk1995/article/details/51592339
通过下载编译好的wheel文件直接安装,来绕过我们本机编译的过程,就不会报错啦。
但是最根本的解决办法还是通过更改环境变量,强制指认python使用我们给出版本的编译器,这样就不用对照着自己的平台信息一个一个找wheel包了。可是在使用pip install或者python setup.py install之前,先使用set命令修改环境变量,

SET VS__COMNTOOLS=%VS___COMNTOOLS%

其中__的地方根据情况填,比如,报错的地方说找不到vc++10,第一个就填100,第二个填字自己安装过的vc++版本。(注意vc++2008其实对应90,而2010对应100,2013对应120,2015对应140,不要填错了)

2.opensslv.h: No such file or directory

安装过程在安装cryptography 时还可能会出现一个问题,

openssl/opensslv.h: No such file or directory 

这个问题是因为所使用的编译器的include文件中没有openssl的头文件,通过阅读cryptography 的安装说明,可以看到到他对openssl有需求,我们可以去
https://jenkins.cryptography.io/job/openssl-release/
这个网站下载对应自己py版本的openssl库文件(2010和2015似乎和编译器版本还有python版本有关,可以都装下试试),之后把解压出来的include文件夹的内容拷贝到vc\include里边,把lib的内容拷贝到Pythonxx\libs里边,然后再次安装,他就能找到对应的头文件和库文件了。
一开始把解压的lib也拷贝到了vc\lib下,他会报另一个错,大概就是.h文件找到了,但是找不到lib文件,通过看日志可以发现,lib文件是从Pyhtonxx\libs里边搜的,所以lib应该放到Pythonxx\libs下边,具体原理不清楚。。。

3.cannot import name _win32stdio

这个问题主要是因为在window环境和python3上运行scrapy要做一些额外的工作,不能直接运行(主要是twisted模块不支持)。
我们在这里可以找到解决办法:http://stackoverflow.com/questions/37342603/importerror-cannot-import-name-win32stdio
首先要到github上找到twisted的仓库,从其internet目录下拷贝_win32stdio和_pollingfile文件到自己python3的site_package里的相应位置,之后使用pip安装pypiwin32(这个是给python3提供win32接口的扩展库)。之后scrapy就能正常运行了。

4.找不到libxml库

问题和报错一致,直接去这里:
http://xmlsoft.org/sources/win32/
下载32或者64位的libxml头文件和库文件,拷贝到相应目录即可。不过因为libxml经常需要iconv库和zlib库所以也要下载安装,在这个ftp服务器上也有。
下载好之后,把include文件拷贝到vs和python的include文件夹,lib文件拷贝到vs和python的libs文件夹中,dll文件拷贝到system32文件夹下边就好了,还可以使用bin下边的二进制执行文件验证安装成功没有。
更正:对于windows下的py3版本以上,libxml似乎都不太支持,没有现成的wheel用,编译也经常因为头文件和c文件错误而失败。但是官方给出了替代方案就是lxml,去
http://www.zhihu.com/question/26857761
找到对应自己版本的wheel文件直接用pip安装就好了(比如文件中带有cp34的就是对应python3.4)。

0 0
原创粉丝点击