windows环境下配置pip时有冲突
问自己的问题:
是什么造成了不同版本之间的冲突
python是什么
scrapy是什么
python+pip的安装
软件:python链接:http://pan.baidu.com/s/1pKA7U7x 密码:hw11
pip1.5.6连接:链接:http://pan.baidu.com/s/1eS9eBXg 密码:x3d3
系统:window10
1.python直接打开软件一路next安装完成
此时一次性可以把python和其下的Scripts目录添加进系统变量。
2.pip安装包解压后打开cmd,cd进入安装包所在位置,输入
python setup.py install
进行安装
出现以下信息表示安装完成
输入pip检验是否安装成果,不成功的话会提示‘pip’不是内部命令
scrapy的安装:
输入pip install Scrapy 开始安装
出现如下错误:
进入python shell 输入import scrapy出现如下错误
提示说明没有安装six
由于装好了pip,输入pip install six成功安装了
再试一遍scrapy,提示没有安装twisted
于是输入pip install twisted,再次出错,于是需要知道vcvarsall.bat为什么会找不到
搜索了整个电脑都没找到这个文件,说明我需要重新下载yi'g
查到如下资料:
scrapy的依赖环境:
目前稳定使用scrapy的依赖环境如下:
pip install Twisted==14.0.2
w3lib==1.11.0
queuelib==1.2.2
lxml==3.3.0
pyOpenSSL==0.12
cssselect==0.9.1
six==1.9.0
scrapy==0.24.4
pycurl==7.19.5.1
django==1.4.18
mysql-python==1.2.5
service_identity==14.0.0
selenium==2.44.0
simplejson==3.6.5
pip install Twisted==14.0.2 https://pypi.python.org/packages/source/T/Twisted/Twisted-14.0.2.tar.bz2
pip install w3lib==1.11.0
pip install queuelib==1.2.2
pip install lxml==3.3.0
pip install pyOpenSSL==0.12
pip install cssselect==0.9.1
pip install six==1.9.0
pip install scrapy==0.24.4
pip install pycurl==7.19.5.1
pip install django==1.4.18
pip install mysql-python==1.2.5
pip install service_identity==14.0.0
pip install selenium==2.44.0
pip install simplejson==3.6.5
1.windows上做Python开发,搭环境还真不比Linux容易。error: Unable to find vcvarsall.bat这个错误眼熟吧?
凡是安装和操作系统底层密切相关的Python扩展,几乎都会遇到这个错误。比如PIL, Pillow(两个图形库),greenlet以及其基础之上的eventlet, gevent微线程并发库等等。当然了有一些情况下,你不必彻底解决它,你可以选择windows版本,那么也就只能使用阉割版功能。
PIL有windows版,即使安装上了,64位Python一定报错 The _imaging C module is not installed, 除非自己重新编译安装。此外与CPU位数可能有关系,仅个人猜测。本人两个机器都是Win7旗舰版64位,安装的32位Python,其中一个CPU是64位的也遇到这个错误,32位的CPU则不报错。
为了解决64位CPU报错,于是安装Pillow的windows版,确实能正常使用,不再报错。但是图片效果极不理想,图片里面用到font就悲剧,出个验证码的图片都难以辨认。
greenlet也可以安装windows版,有可能报错加载动态链接库失败,比如”ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。“不幸我也遇到了。
2.windows安装使用这些偏底层的Python扩展太不爽了,怎么彻底解决 error: Unable to find vcvarsall.bat 呢?
1.不要按网上说的,安装MinGW,然后在“..python安装路径...\Lib\distutils”下新建一个文件distutils.cfg,在这文件里面指定编译器为mingw32
如:
[build]
compiler=mingw32
原因是什么,可以百度一下mingw是什么,毕竟不是GCC,又不如VC接windows的地气,编译出来的东西,安装上了也有不好使的时候。甚至我遇到MinGW还无法编译greenlet0.4.1,导致greenlet无法源码安装。MinGW经常command 'gcc' failed with exit status 1 或者error: unrecognized command line option '-mno-cygwin'。即使编译通过了,安装上了,你安装的Python标准库不是由mingw编译的,你的扩展包却是mingw编译的,谁也不敢保证完全兼容或者说质量跟得上,说不准一些莫名其妙的神经质错误。
2.去下载安装VS2010(08版貌似也行,不过没必要用旧版,指不定哪个库又无法编译),给个地址(百度的云盘 国内应该速度可以)
http://pan.baidu.com/share/link?shareid=1609273194&uk=3255422755
然后注意这一步很重要:命令行下执行 SET VS90COMNTOOLS=%VS100COMNTOOLS%
如果你安装的是 2012 版 SET VS90COMNTOOLS=%VS110COMNTOOLS%
如果你安装的是 2013版 SET VS90COMNTOOLS=%VS120COMNTOOLS%
或者更暴力,直接配置系统环境变量 VS90COMNTOOLS指向 %VS你的版本COMNTOOLS%
你还可以更暴力,在“..python安装路径...\Lib\distutils目录下有个msvc9compiler.py找到243行
toolskey = "VS%0.f0COMNTOOLS" % version 直接改为 toolskey = "VS你的版本COMNTOOLS"(这个就是为什么要配 ”VS90COMNTOOLS“ 的原因,因为人家文件名都告诉你了是 Microsoft vc 9的compiler, 代码都写死了要vc9的comntools,就要找这个玩意儿,找不到不干活)
这么做的理由是Python2。7 扩展包是可以用08版或者更高的VS编译的,其setup.py(安装脚本)都是去windows系统寻找08版的VS,所以设置VS90的path
如果Python版本小于2.7,强烈建议使用 VS08版,用2010或者更高可能部分扩展不好使。给个例子:
http://stackoverflow.com/questions/6551724/how-do-i-point-easy-install-to-vcvarsall-bat 这个例子说明 VS2010不适合Python2.6
3.安装VS后该重启的重启,clean一下之前安装Python扩展失败的残留文件,然后 直接下载 pil pillow greenlet eventlet等源码,解压后python setup.py build发现都可以编译了。接下来就换成 python setup.py install安装吧。
同时在国外论坛上搜到这样的说法:
Unfortunately to be able to use the extension modules provided by others you'll be forced to use the official compiler to compile Python. These are:
Visual Studio 2008 for Python 2.7. See:https://docs.python.org/2.7/using/windows.html#compiling-python-on-windows
Visual Studio 2010 for Python 3.4. See:https://docs.python.org/3.4/using/windows.html#compiling-python-on-windows
Alternatively, you can use MinGw to compile extensions in a way that won't depend on others.
See: https://docs.python.org/2/install/#gnu-c-cygwin-MinGW orhttps://docs.python.org/3.4/install/#gnu-c-cygwin-mingw
This allows you to have one compiler to build your extensions for both versions of Python, Python2.x and Python 3.x.
总的意思就是:我们要使用这个模块就必须安装Visual Studio 2008 for Python 2.7或者Visual Studio 2010 for Python 3.4,用MinGw也是可以的。
我根据安装了一些vs的运行环境,一个个把scrapy的依赖环境用pip装上后可以正常运行了
参考资料:国外网站上的在windows上安装python:https://docs.python.org/3.4/using/windows.html#compiling-python-on-windows