我第一次试着和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