2014-06-21 189 views
7

因此,在用戶需要爲Scrapy安裝的許多軟件包中,我認爲我在使用pyOpenSSL時遇到了問題。爲Scrapy安裝軟件包依賴項

當我試圖讓補習Scrapy項目創建,我得到這個輸出如下:

Traceback (most recent call last): 
    File "C:\Python27\lib\runpy.py", line 162, in _run_module_as_main 
    "__main__", fname, loader, pkg_name) 
    File "C:\Python27\lib\runpy.py", line 72, in _run_code 
    exec code in run_globals 
    File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 168, in <module> 
    execute() 
    File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 122, in execute 
    cmds = _get_commands_dict(settings, inproject) 
    File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 46, in _get_comma 
nds_dict 
    cmds = _get_commands_from_module('scrapy.commands', inproject) 
    File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 29, in _get_comma 
nds_from_module 
    for cmd in _iter_command_classes(module): 
    File "C:\Python27\lib\site-packages\scrapy\cmdline.py", line 20, in _iter_comm 
and_classes 
    for module in walk_modules(module_name): 
    File "C:\Python27\lib\site-packages\scrapy\utils\misc.py", line 68, in walk_mo 
dules 
    submod = import_module(fullpath) 
    File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module 
    __import__(name) 
    File "C:\Python27\lib\site-packages\scrapy\commands\bench.py", line 3, in <mod 
ule> 
    from scrapy.tests.mockserver import MockServer 
    File "C:\Python27\lib\site-packages\scrapy\tests\mockserver.py", line 6, in <m 
odule> 
    from twisted.internet import reactor, defer, ssl 
    File "C:\Python27\lib\site-packages\twisted\internet\ssl.py", line 59, in <mod 
ule> 
    from OpenSSL import SSL 
    File "build\bdist.win32\egg\OpenSSL\__init__.py", line 8, in <module> 
    File "build\bdist.win32\egg\OpenSSL\rand.py", line 11, in <module> 
    File "build\bdist.win32\egg\OpenSSL\_util.py", line 3, in <module> 
ImportError: No module named cryptography.hazmat.bindings.openssl.binding 

當我用Google搜索的是最後一個錯誤(沒有名爲cryptography.hazmat模塊),我看到一對夫婦提到的pyOpenSSL。所以,我繼續嘗試運行easy_install pyOpenSSL==0.14,以確保它是最新的版本,但是當我這樣做,我得到這樣的輸出:

c:\python27\include\pymath.h(22) : warning C4273: 'round' : inconsistent dll lin 
kage 
     C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(51 
6) : see previous definition of 'round' 
c:\users\bk\appdata\local\temp\easy_install-tztawu\cryptography-0.4\temp\easy_in 
stall-svxsjy\cffi-0.8.2\c\misc_win32.h(225) : error C2632: 'char' followed by 'b 
ool' is illegal 
c:\users\bk\appdata\local\temp\easy_install-tztawu\cryptography-0.4\temp\easy_in 
stall-svxsjy\cffi-0.8.2\c\misc_win32.h(225) : warning C4091: 'typedef ' : ignore 
d on left of 'unsigned char' when no variable is declared 
c/_cffi_backend.c(5295) : warning C4146: unary minus operator applied to unsigne 
d type, result still unsigned 
c/_cffi_backend.c(5296) : warning C4146: unary minus operator applied to unsigne 
d type, result still unsigned 
c/_cffi_backend.c(5297) : warning C4146: unary minus operator applied to unsigne 
d type, result still unsigned 
c/_cffi_backend.c(5298) : warning C4146: unary minus operator applied to unsigne 
d type, result still unsigned 
error: Setup script exited with error: command '"C:\Program Files (x86)\Microsof 
t Visual Studio 12.0\VC\BIN\cl.exe"' failed with exit status 2 

所以我有點失落,什麼我需要做的就是Scrapy啓動並正常運行

+0

我有Python的32位安裝以及pyopenssl 32位。不知道還有什麼可能是錯誤的64位... – simplycoding

回答

1

我強烈建議使用conda而不是pip,尤其是在使用Windows時。 在許多其他的事情中,它會爲你的系統抓取相應的二進制文件。它使得建立一個科學的Python環境(想想Scipy,Numpy,Pandas ......)輕而易舉。

因此,閱讀了關於Anaconda,安裝Anaconda,然後做:如果你想讓它封裝在一個單獨的環境

conda create -n scrapyenv python=2 # creates a new py2 environment 
activate scrapyenv     # switch to the new environment 
conda install scrapy    # install scrapy 

第一步和第二步纔有必要。順便說一下,如果你做conda install anaconda,將會安裝一整套有用的軟件包。

Additionaly,萬一conda不包括pyOpenSSL或者你不想安裝anaconda請看看教程How to install Scrapy in 64bit Windows 7點9。

+0

我有相同的依賴性問題,重新安裝conda而不是pip解決,謝謝 – mgilbert

21

我在Mac OS上遇到了同樣的錯誤。

我通過使用openssl 0.13而不是最新版本解決了它。

easy_install pyOpenSSL==0.13 

pip install pyOpenSSL==0.13 
+0

贊成它的工作..這是2015年在歷史上更多的人完成大部分的事情不知道爲什麼它的作品... – nehemiah

+0

使用PIP爲我工作,並不需要指定版本 – TomSelleck

0

我得到了同樣的問題,並嘗試與第一個答案來解決它,但它不工作。 最後,我刪除pyOpenSSL並下載pyopenssl,安裝程序。問題就解決了。 pyopenssl的網址是: https://launchpad.net/pyopenssl

0

你應該升級pip您嘗試安裝Scrapy前:

pip install --upgrade pip 
pip install Scrapy 
相關問題