pyspider安裝從失敗到成功運行


File "c:\users\13733\appdata\local\programs\python\python37\lib\site-packages\pyspider\run.py", line 231

 
async=True, get_object=False, no_input=False): ^

參考:https://segmentfault.com/q/1010000015188569

 

Command "python setup.py egg_info" failed with error code 10 in C:\Users\cc\AppData\Local\Temp\pip-build-ietfuwf2\pycurl

參考:https://blog.csdn.net/shawroad88/article/details/82222811

 

ValueError: Invalid configuration:
- Deprecated option 'domaincontroller': use 'http_authenticator.domain_controller' instead.

參考:https://www.cnblogs.com/wisir/p/10587938.html

 

命令行pyspider,之后一直卡在result_worker starting...

參考:https://segmentfault.com/q/1010000007682102/a-1020000007769713(把防火牆關了,以及再開一個cmd,運行pyspider,再關掉原來那個cmd#實測替換完run.py、tornado_fetcher.py、app.py的async為shark,注意只替換單詞為async的,async_father,Async不用替換,運行spider all 如果出錯 安裝pip install wsgidav==0.16.0。最后出現result_worker starting...,這個命令行不關閉,在管理員身份打開一個cmd,運行spider all ,實測成功運行。

 

 

d:\python35\lib\site-packages\pyspider\libs\utils.py:196: FutureWarning: timeout is not supported on your platform.
warnings.warn("timeout is not supported on your platform.", FutureWarning)

這個問題,可以忽略,不影響使用。

 

 

一、概述

本機已經安裝好python3.7,現做測試,需要在開發機上安裝pyspider,基於windows下的安裝遇到一些坑,特此記錄

二、安裝步驟

pip install pyspider
此過程一般不會有問題,因為pip會自動安裝依賴包,但能不能正常運行起來,它管不了那么多了哦~ 

三、開始填坑

1、執行 pyspider all,立馬報錯:

Traceback (most recent call last):
File "D:\Program Files\python37\Scripts\pyspider-script.py", line 11, in <module>
load_entry_point('pyspider==0.3.10', 'console_scripts', 'pyspider')()
File "d:\program files\python37\lib\site-packages\pkg_resources\__init__.py", line 487, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "d:\program files\python37\lib\site-packages\pkg_resources\__init__.py", line 2728, in load_entry_point
return ep.load()
File "d:\program files\python37\lib\site-packages\pkg_resources\__init__.py", line 2346, in load
return self.resolve()
File "d:\program files\python37\lib\site-packages\pkg_resources\__init__.py", line 2352, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "d:\program files\python37\lib\site-packages\pyspider\run.py", line 231
async=True, get_object=False, no_input=False):
^
SyntaxError: invalid syntax

 


 這是因為python3.5開始把async和await設為關鍵字了,這里作為參數名與關鍵字沖突了,因此找到對應的py文件,將async修改為其他名稱,我修改為asyn。在以下幾個文件中存在:

pyspider->run.py、pyspider->fetcher->tornado_fetcher.py、webui>app.py。

2、再執行,再報錯:

File "d:\program files\python37\lib\site-packages\pyspider\webui\app.py", line 59, in run
from .webdav import dav_app
File "d:\program files\python37\lib\site-packages\pyspider\webui\webdav.py", line 216, in <module>
dav_app = WsgiDAVApp(config)
File "d:\program files\python37\lib\site-packages\wsgidav\wsgidav_app.py", line 134, in __init__
_check_config(config)
File "d:\program files\python37\lib\site-packages\wsgidav\wsgidav_app.py", line 118, in _check_config
raise ValueError("Invalid configuration:\n - " + "\n - ".join(errors))
ValueError: Invalid configuration:
- Deprecated option 'domaincontroller': use 'http_authenticator.domain_controller' instead.

 


這個是因為wsgidav版本太高了,重新安裝一下:

python -m pip uninstall wsgidav
python -m pip install wsgidav==2.4.1
 至此,有些小伙伴就應該可以正常啟動pyspider了,我的環境還遇到以下錯誤:

3、再報錯:

File "d:\program files\python37\lib\site-packages\pyspider\run.py", line 497, in all
ctx.invoke(webui, **webui_config)
File "d:\program files\python37\lib\site-packages\click\core.py", line 555, in invoke
return callback(*args, **kwargs)
File "d:\program files\python37\lib\site-packages\click\decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "d:\program files\python37\lib\site-packages\pyspider\run.py", line 384, in webui
app.run(host=host, port=port)
File "d:\program files\python37\lib\site-packages\pyspider\webui\app.py", line 64, in run
from werkzeug.wsgi import DispatcherMiddleware
ImportError: cannot import name 'DispatcherMiddleware' from 'werkzeug.wsgi' (d:\program files\python37\lib\site-packages\werkzeug\wsgi.py)

 


經過多次嘗試,發現是 werkzeug版本高了,DispatcherMiddleware這個類已經不存在了,因此重新安裝小版本:

python -m pip uninstall werkzeug
python -m pip install werkzeug=0.16
為什么是0.16版本?我是再卸載后,暫不安裝,直接執行pyspider時,錯誤提示信息中顯示了最低版本為0.16:)

4、正常運行,截圖紀念

 

 

 

 


————————————————
版權聲明:本文為CSDN博主「paulluo0739」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/paulluo0739/java/article/details/104255877


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM