Scrapy 1.2.0 in Python 3.5



我第一次试着和Scrapy玩。切换到Anaconda创建的python 3.5环境,并在scrapy网站上安装了scrapy 1.2.0:

$conda install -c scrapinghub scrapy

现在当我尝试执行

$scrapy startproject tutorial

我得到了如下的回溯:

Traceback (most recent call last):
  File "/Users/bonjuice/anaconda/envs/py35/bin/scrapy", line 7, in <module>
    from scrapy.cmdline import execute
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/scrapy/cmdline.py", line 9, in <module>
    from scrapy.crawler import CrawlerProcess
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/scrapy/crawler.py", line 6, in <module>
    from twisted.internet import reactor, defer
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/twisted/internet/reactor.py", line 38, in <module>
    from twisted.internet import default
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/twisted/internet/default.py", line 56, in <module>
    install = _getInstallFunction(platform)
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/twisted/internet/default.py", line 50, in _getInstallFunction
    from twisted.internet.selectreactor import install
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/twisted/internet/selectreactor.py", line 18, in <module>
    from twisted.internet import posixbase
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/twisted/internet/posixbase.py", line 18, in <module>
    from twisted.internet import error, udp, tcp
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/twisted/internet/tcp.py", line 28, in <module>
    from twisted.internet._newtls import (
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/twisted/internet/_newtls.py", line 21, in <module>
    from twisted.protocols.tls import TLSMemoryBIOFactory, TLSMemoryBIOProtocol
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/twisted/protocols/tls.py", line 41, in <module>
    from OpenSSL.SSL import Error, ZeroReturnError, WantReadError
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/OpenSSL/rand.py", line 12, in <module>
    from OpenSSL._util import (
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/OpenSSL/_util.py", line 6, in <module>
    from cryptography.hazmat.bindings.openssl.binding import Binding
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 234, in <module>
    Binding.init_static_locks()
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 180, in init_static_locks
    cls._ensure_ffi_initialized()
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 167, in _ensure_ffi_initialized
    cls.lib = build_conditional_library(lib, CONDITIONAL_NAMES)
  File "/Users/bonjuice/anaconda/envs/py35/lib/python3.5/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 104, in build_conditional_library
    if not getattr(lib, condition):
AttributeError: cffi library '_openssl' has no function, constant or global variable named 'Cryptography_HAS_RSA_OAEP_MD'

我在网上看了看,但似乎没有人有类似的问题,谁能给我指出正确的方向?感谢!

似乎与密码学和openssl有关。

官方文档页很好地涵盖了这个问题。确保您拥有所有非python依赖项。
这是文档中的重要部分:

sudo apt-get install build-essential libssl-dev libffi-dev python-dev

也有conda/anaconda安装的具体说明:

由于conda中的一个错误,尝试开箱安装加密将导致错误。这可以通过为您的平台设置库路径环境变量来解决。

env LD_LIBRARY_PATH="$HOME/anaconda/lib" pip install cryptography

最新更新