Mac安装brew ,pysider,pycurl 等问题及其解决方案。

更新pysider all遇到的新问题。

电脑主板坏了之后,换了新的主板,重新装。执行pyspider all 的时候又出现了新问题。
_pickle.PicklingError: Can’t pickle <function cli at 0x1035aeb80>: it’s not the same object as pyspider.run.cli

这个是什么,到现在我都不知道。我当时试了试很多方法,都不行。最后我决定把python3.8降为3.7,而且此时的pip3也有20.0.2降到19.2.3,此时我重新执行,又出现了一下熟悉的问题。
1、(None, None, async=False)关键字问题,修改就行
2、5000端口被占用,kill掉就行。
3、pycurl版本问题
ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (none/other)
pycurl 卸载重新装
4、 wsgidav版本问题
ValueError: Invalid configuration:Deprecated option ‘domaincontroller’:usehttp_authenticator.domain_controller’ instead.

降 wsgidav==2.4.1版本

5、werkzeug版本问题
ImportError: cannot import name ‘DispatcherMiddleware’ from ‘werkzeug.wsgi’ (/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/werkzeug/wsgi.py)

继续降werkzeug==0.16.1

此时只是没有six库的问题。由上面几个解决完了,pyspider all 执行成功。(具体详细的解决步骤,在下面👇👇👇)


这两天学习爬虫,要求安装pysider包,从此开始,遇到了一系列我尽可能遇到的问题。我把这些问题做个总结,然后有小伙伴需要的话,可以参考以下。由于出现问题的时候我没有截图,只是凭借印象,所以很多问题没有提供图片,但是这个可以意会的😂。

pip3 install pysider
pip3 install pycurl
pysider all

通过以上命令可以正常安装pysider 以及pycurl,运行pysider all ,可以验证是否安装成功。
这儿出现了第一个问题,25555端口被占用
在这里插入图片描述
我网上查看了以下解决方案,所有方案都雷同,也就这个简单方便好用了,kill掉就行了
在这里插入图片描述
继续执行 pysider all,又出现第二个问题,
ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (none/other)

我查看了好多资料说各种各样的,其中最扯的是说要升级openssl,我傻乎乎的去升级,升级openssl说首先要升级brew,从此噩梦开始了…先不说噩梦,先说说第二个问题怎么解决的,网上说pycurl安装出错,大部分给的解决方案是

	pip3 uninstall pycurl
	export PYCURL_SSL_LIBRARY=openssl
	pip3 install pycurl --compile

这个我试了试,没有作用(各位可以参考,万一有用呢)
还有更复杂的要去改代码下源码的,我想了想放弃了,终于在我苦苦探索总结的情况下找到了一个可以执行的解决方案
在终端依次执行以下代码。
pip3 uninstall pycurl# 卸载库
export PYCURL_SSL_LIBRARY=openssl
export LDFLAGS=-L/usr/local/opt/openssl/lib
export CPPFLAGS=-I/usr/local/opt/openssl/include# openssl相关头文件路径
pip3 install pycurl --compile --no-cache-dir # 重新编译安装

给下作者的链接 https://www.jb51.net/article/148831.htm

在回来说说噩梦的问题,这是第三个问题,就是brew的安装更新以及卸载
brew安装
方案一:
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
这个肯定是有用的,但是对我来说不行啊,很卡很慢不说, 而且开始还提示网页打不开。
我复制链接到浏览器也打不开,有人说更改hosts就可以了,我又傻乎乎的更改了hosts文件
192.30.253.113 github.com
192.30.253.119 gist.github.com
151.101.100.133 assets-cdn.github.com
151.101.100.133 raw.githubusercontent.com
151.101.100.133 gist.githubusercontent.com
151.101.100.133 cloud.githubusercontent.com
151.101.100.133 camo.githubusercontent.com
151.101.100.133 avatars0.githubusercontent.com
151.101.100.133 avatars1.githubusercontent.com
151.101.100.133 avatars2.githubusercontent.com
151.101.100.133 avatars3.githubusercontent.com
151.101.100.133 avatars4.githubusercontent.com
151.101.100.133 avatars5.githubusercontent.com
151.101.100.133 avatars6.githubusercontent.com
151.101.100.133 avatars7.githubusercontent.com
151.101.100.133 avatars8.githubusercontent.com
添加了之后很神奇,的确可以打开了,但是会有后遗症。
后遗症就是你发现输入IP打开网页的时候会各种风险提示,输入网址打开的时候没有问题。这也就直接导致了再用方案一下载的时候会提示无法连接。这个必须删除刚才hosts里面添加的乱七八糟的东西,然后卸载brew就行了。

然后我又继续探索,发现了第二种解决方案。
方案二:
打开网页链接下载文件保存起来为brew_install.rb 。ruby 运行的是rb文件。
如果用这个命令也可以直接下载到终端文件夹,可以在终端文件夹里面看到

1、curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install
2、打开brew_install修改文件中
BREW_REPO = “https://github.com/Homebrew/brew”.freeze
修改为BREW_REPO = “git://mirrors.ustc.edu.cn/brew.git”.freeze
3、执行 ruby brew_install.rb 然后开始下载文件成功。
如果brew_install不是在终端的话,需要先cd进入此文件目录再执行ruby brew_install.rb 。

4、修改内核源
$ cd “$(brew --repo)”
$ git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
$ cd “$(brew --repo)/Library/Taps/homebrew/homebrew-core”
$ git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

至此brew安装真的成功了,为什么我说真的呢,因为之前我也成功过一次,brew也都能正常用.但是因为有人说要更新openssl的时候需要先brew update,于是我就执行这个命令,我发现不行,卡着不动,于是我又开始排查问题,找不出来(现在猜猜应该是hosts文件的问题),但是当时改了也还是不行,我就想先卸载重新装,这下卸载也成了问题。那就说说卸载的三个解决方案。

方案一,这个肯定也是可以的,毕竟官方给的嘛
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)”
很抱歉,我执行了也出问题,错误我也忘记截图了,但是不行。

方案二,有人说好使,嗯,我是没有用,还出现问题:
cd brew --prefix
rm -rf Cellar
brew prune
rm git ls-files
rm -r Library/Homebrew Library/Aliases Library/Formula Library/Contributions
rm -rf .git
rm -rf ~/Library/Caches/Homebrew
然后我又开始探索,自己研发了方案三,思路是这样的,我是下载instrall_brew,然后ruby安装,是不是我应该也下载uninstrall_brew,然后ruby安装,我尝试了一下,果然卸载下来了。

方案三具体步骤如下:
1、https://raw.githubusercontent.com/Homebrew/install/master/uninstall
2、打开这个链接保存uninstall.rb文件
3、然后ruby uninstall.rb
方案雷同安装。
然后又按照我上面说的安装的方案重新安装了一下,可以执行brew update了。有人说,用完了需要再把源换回去,我暂时用着没有问题,也就没有再折腾了。至此brew安装,更新,卸载的问题都解决了。

我在纠结brew的时候还遇到过着下面两个问题,但是怎么解决的我忘了,实在不行,brew卸载安装之后都没有事情了
Fix CURL (51) SSL error: no alternative certificate subject name matches
curl: (7) Failed to connect to raw.githubusercontent.com port 443: Operation

激动人心的时刻是不是感觉都要来了,又试了一下pysider all,又出现第四个问题,大概就是 async=True, get_object=False, no_input=False:。出现错误,还是没有截图。
也就这个意思,网上也就这一个错误,解决起来也简单:

就是现在的async成关键字变金贵了,身份不一样了,不能在用,把下面三个文件所有的async改成async1就行了。
/usr/local/lib/python3.7/site-packages/pyspider/run.py
/usr/local/lib/python3.7/site-packages/pyspider/webui/app.py
/usr/local/lib/python3.7/site-packages/pyspider/fetcher/tornado_fetcher.py

但是你以为这就结束了嘛,too young too simple,接着运行pysider all出现了**问题五,又出现了错误说six_move有问题,**具体错误没有截图,但是我想卸载six重新装总没有问题吧,卸载的时候提示无法卸载,然后我又开始查,查到了这个解决方案,试了一下果然好使。

	sudo pip3 install six --upgrade --ignore-installed six

卸载之后重新装,这个问题就解决了。

有了上面的经验,我就小心翼翼求证pysider all看这次能不能行,果然不让我失望,还是不行,出现第六个问题,又报错了Deprecated option ‘domaincontroller’: use ‘http_authenticator.domain_controller’ instead.
继续查呗,还能咋地。网上有两个方案,一个是修改代码,一个是降版本,修改代码的我就不贴了,我试过了,没有用。于是我降了版本

python3 -m pip install wsgidav==2.4.1

执行,继续出错。
ImportError: cannot import name ‘DispatcherMiddleware’ from ‘werkzeug.wsgi’

发现还是版本的原因,werkzeug的版本为1.0.0,这个版本中没有DispatcherMiddleware方法,所以还是降低版本。
注意降低版本不能低于0.15版本,因为我们的pyspider要求大于0.15版本以上
参考:https://blog.csdn.net/lang_niu/article/details/104501473

python3 -m pip uninstall werkzeug # 卸载
python3 -m pip install werkzeug==0.16.1 #安装0.16.1版本

然后继续运行pysider all,当当当~成功啦!!!
在这里插入图片描述
我觉得我把大家能出现的问题出现的全了,基本可以参考解决pysider的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值