在 OSX 上 pip 安装 websocket-client 时出错

Errors when pip install websocket-client on OSX

我可以成功地将我的 websockets 客户端连接到 websockets 服务器,但是当我尝试向它发送一些消息时,它给我这个错误:

error =  'NoneType' object has no attribute 'connected'

看来我需要使用 websockets-client 而不仅仅是 websockets,所以我尝试 pip 安装它并遇到很多错误。如何解决这些错误以便我可以在 python 上使用 websockets-client?

$ pip uninstall websocket
Skipping websocket as it is not installed.
$ pip install websocket-client
Requirement already satisfied: websocket-client in /usr/local/lib/python2.7/site-packages (0.44.0)
Requirement already satisfied: six in /usr/local/lib/python2.7/site-packages (from websocket-client) (1.10.0)
pyobjc-framework-mapkit 3.1.1 requires pyobjc-framework-CoreLocation>=3.1.1, which is not installed.
pyobjc-framework-syncservices 3.1.1 requires pyobjc-framework-CoreData>=3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-Accounts==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-AddressBook==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-AppleScriptKit==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-AppleScriptObjC==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-ApplicationServices==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-Automator==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-AVFoundation==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-AVKit==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-CalendarStore==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-CFNetwork==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-CloudKit==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-Collaboration==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-Contacts==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-ContactsUI==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-CoreBluetooth==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-CoreData==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-CoreLocation==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-CoreText==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-CoreWLAN==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-CryptoTokenKit==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-DictionaryServices==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-DiskArbitration==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-EventKit==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-ExceptionHandling==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-FinderSync==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-FSEvents==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-GameCenter==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-GameController==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-ImageCaptureCore==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-IMServicePlugIn==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-InputMethodKit==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-InstallerPlugins==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-InstantMessage==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-LatentSemanticMapping==3.1.1, which is not installed.
pyobjc 3.1.1 requires pyobjc_framework-LaunchServices==3.1.1, which is not installed.
mitmproxy 0.18.3 has requirement requests<2.12,>=2.9.1, but you'll have requests 2.18.4 which is incompatible.
viper 0.0.1 has requirement ethereum==2.0.4, but you'll have ethereum 1.6.1 which is incompatible.

pip 应该可以为您解决缺少的依赖项,但是您遇到的两个错误在最后两行。即,您对 requestsethereum 的版本要求不兼容。您可以尝试更改这些软件包的版本,但最终可能会破坏您系统上的其他应用程序。

我建议在这种情况下使用 Python 虚拟环境,这将确保您的程序的依赖项不会引入与系统上其他程序的依赖项不兼容。

关于在虚拟环境中管理包的很好的参考指南位于此处:http://docs.python-guide.org/en/latest/dev/virtualenvs/