安装Scrapy时遇到的问题
我已经(据我所知)正确安装了Scrapy所需的所有依赖项。我在64位的Windows Vista上运行Scrapy.org的64位Python。目前我已经安装了:
- Visual C++ 运行库(64位)
- Win32 Open SSL(按照上面的说明把DLL文件复制到bin目录)
- 添加了环境变量,指向C:\Python27、C:\Python27\Scripts和openssl-win32\bin
- Visual C++ 2008开发环境
- Pywin32
- Zope
- Twisted
- lxml
- PyopenSSL
- w3lib
这是不是我让Scrapy正常运行所需的完整列表?到目前为止,当我尝试运行以下命令时:
scrapy startproject myproject
在命令提示符中出现了以下错误:
Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.
C:\Users\Oleg Salenko>scrapy startproject mrscrap
Traceback (most recent call last):
File "c:\Python27\Scripts\scrapy", line 3, in <module>
from scrapy.cmdline import execute
File "c:\Python27\lib\site-packages\scrapy\cmdline.py", line 9, in <module>
from scrapy.crawler import CrawlerProcess
File "c:\Python27\lib\site-packages\scrapy\crawler.py", line 3, in <module>
from twisted.internet import reactor, defer
File "c:\Python27\lib\site-packages\twisted\internet\reactor.py", line 38, in
<module>
from twisted.internet import default
File "c:\Python27\lib\site-packages\twisted\internet\default.py", line 56, in
<module>
install = _getInstallFunction(platform)
File "c:\Python27\lib\site-packages\twisted\internet\default.py", line 50, in
_getInstallFunction
from twisted.internet.selectreactor import install
File "c:\Python27\lib\site-packages\twisted\internet\selectreactor.py", line 1
8, in <module>
from twisted.internet import posixbase
File "c:\Python27\lib\site-packages\twisted\internet\posixbase.py", line 24, i
n <module>
from twisted.internet import error, udp, tcp
File "c:\Python27\lib\site-packages\twisted\internet\tcp.py", line 29, in <mod
ule>
from twisted.internet._newtls import (
File "c:\Python27\lib\site-packages\twisted\internet\_newtls.py", line 21, in
<module>
from twisted.protocols.tls import TLSMemoryBIOFactory, TLSMemoryBIOProtocol
File "c:\Python27\lib\site-packages\twisted\protocols\tls.py", line 41, in <mo
dule>
from OpenSSL.SSL import Error, ZeroReturnError, WantReadError
File "c:\Python27\lib\site-packages\OpenSSL\__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "c:\Python27\lib\site-packages\OpenSSL\rand.py", line 11, in <module>
from OpenSSL._util import (
File "c:\Python27\lib\site-packages\OpenSSL\_util.py", line 4, in <module>
binding = Binding()
File "c:\Python27\lib\site-packages\cryptography\hazmat\bindings\openssl\bindi
ng.py", line 87, in __init__
self._ensure_ffi_initialized()
File "c:\Python27\lib\site-packages\cryptography\hazmat\bindings\openssl\bindi
ng.py", line 106, in _ensure_ffi_initialized
libraries=libraries,
File "c:\Python27\lib\site-packages\cryptography\hazmat\bindings\utils.py", li
ne 80, in build_ffi
extra_link_args=extra_link_args,
File "c:\Python27\lib\site-packages\cffi\api.py", line 341, in verify
lib = self.verifier.load_library()
File "c:\Python27\lib\site-packages\cffi\verifier.py", line 75, in load_librar
y
return self._load_library()
File "c:\Python27\lib\site-packages\cffi\verifier.py", line 151, in _load_libr
ary
return self._vengine.load_library()
File "c:\Python27\lib\site-packages\cffi\vengine_cpy.py", line 138, in load_li
brary
raise ffiplatform.VerificationError(error)
cffi.ffiplatform.VerificationError: importing 'c:\\Python27\\lib\\site-packages\
\cryptography\\_Cryptography_cffi_444d7397xa22f8491.pyd': DLL load failed: %1 is
not a valid Win32 application.
C:\Users\Oleg Salenko>
有没有人能看出这些错误的原因?我对Python还比较陌生,而Scrapy是我尝试过的最难让它工作的东西。
谢谢
3 个回答
0
我刚在另一个讨论中回答过这个问题,不过为了保险起见,我再说一遍。
我刚刚解决了这个问题,想告诉可能会遇到这个问题的人,关键是你需要安装PyWin32。对于Windows用户来说:
- 首先,使用命令行安装PyWin32,可以在这里找到,记得选择与你的Python版本和系统是32位还是64位相对应的版本。然后在命令提示符下输入:
pip install c:\users\desktop\pywin32-220.1-cp27-cp27m-win_amd64.whl
- 接下来,安装pywin32的系统文件。你需要在提升权限的命令提示符下运行“python.exe Scripts\pywin32_postinstall.py -install”。要以管理员身份运行命令提示符,然后在命令行中输入:
python "C:\Python27\Scripts\pywin32_postinstall.py" -install
0
我通过从这里安装64位的pyOpenSSL来解决这个问题:http://www.egenix.com/cryptodownload/?file=egenix-pyopenssl-0.13.0_1.0.0g_1.win-amd64-py2.7.msi
安装64位的OpenSSL并没有解决我的问题。
1
这个问题是通过安装64位的OpenSSL解决的,而不是32位的。虽然有点像小学生的错误,但我还是很高兴自己找到了问题的根本原因!