安装Scrapy时遇到的问题

2 投票
3 回答
901 浏览
提问于 2025-04-18 11:55

我已经(据我所知)正确安装了Scrapy所需的所有依赖项。我在64位的Windows Vista上运行Scrapy.org的64位Python。目前我已经安装了:

  1. Visual C++ 运行库(64位)
  2. Win32 Open SSL(按照上面的说明把DLL文件复制到bin目录)
  3. 添加了环境变量,指向C:\Python27、C:\Python27\Scripts和openssl-win32\bin
  4. Visual C++ 2008开发环境
  5. Pywin32
  6. Zope
  7. Twisted
  8. lxml
  9. PyopenSSL
  10. 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用户来说:

  1. 首先,使用命令行安装PyWin32,可以在这里找到,记得选择与你的Python版本和系统是32位还是64位相对应的版本。然后在命令提示符下输入:

    pip install c:\users\desktop\pywin32-220.1-cp27-cp27m-win_amd64.whl

  2. 接下来,安装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位的。虽然有点像小学生的错误,但我还是很高兴自己找到了问题的根本原因!

撰写回答