ImportError: No module named socketserver

ImportError: No module named socketserver

免责声明:菜鸟

我正在尝试获取 streamparse (https://github.com/Parsely/streamparse) up and running on my machine. I am following the tutorial found here: https://youtu.be/ja4Qj9-l6WQ?t=18m50s 。我已经安装了 leiningen 和 pip,但是当 运行 命令

sparse quickstart

我收到错误:

Randalls-MacBook-Pro:streamparse randallbanks$ sparse quickstart
Traceback (most recent call last):
File "/usr/local/bin/sparse", line 9, in <module>
load_entry_point('streamparse==1.1.0', 'console_scripts', 'sparse')()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 357, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2394, in load_entry_point
return ep.load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2108, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/Library/Python/2.7/site-packages/streamparse/__init__.py", line 11, in <module>
import streamparse.cmdln
File "/Library/Python/2.7/site-packages/streamparse/cmdln.py", line 6, in <module>
from .ext.invoke import (list_topologies, kill_topology, run_local_topology,
File "/Library/Python/2.7/site-packages/streamparse/ext/invoke.py", line 25, in <module>
from ..contextmanagers import ssh_tunnel
File "/Library/Python/2.7/site-packages/streamparse/contextmanagers.py", line 8, in <module>
from six.moves.socketserver import UDPServer, TCPServer
ImportError: No module named socketserver

根据我的阅读,这似乎是 "socketserver" 这个名字在 python2 和 python3 之间的区别。我已经尝试下载 python3 以查看是否可以解决问题,但我将 运行 保留在这个 brew 错误中:

Randalls-MacBook-Pro:streamparse randallbanks$ sudo brew install python3
Password:
Error: Cowardly refusing to `sudo brew install`
You can use brew with sudo, but only if the brew executable is owned by root.
However, this is both not recommended and completely unsupported so do so at
your own risk.

没有'sudo':

Randalls-MacBook-Pro:streamparse randallbanks$ brew install python3
Error: You must `brew link gdbm' before python3 can be installed
Randalls-MacBook-Pro:streamparse randallbanks$ brew link gdbm
Linking /usr/local/Cellar/gdbm/1.11... 
Error: Could not symlink include/gdbm.h
/usr/local/include is not writable.

看来此错误的解决方法是 'not recommended'。我尝试从网站 https://www.python.org/downloads/mac-osx/ 手动下载 python3 ,但我真的不知道我在安装所有这些源文件时在做什么。任何帮助我解决这个问题的最佳方向将不胜感激!

OS X 10.10 预装的 six 版本太旧,无法支持 sparse

您最好的选择是创建一个 virtualenv 并将 sparse 安装到其中。当你这样做时,six 的更新版本将安装到该 virtualenv 中。

不要尝试升级 Apple 提供的版本,因为这可能会破坏其他东西。

问题是您使用的是 Python 的系统安装,它附带的版本 6 (1.4.1) 对于 streamparse 来说太旧了。

正如我在 GitHub 问题中提出的那样,如果大多数人在 OS X 上进行 Python 开发,我建议他们只使用 Anaconda避免尝试在系统 Python 安装中升级东西的问题。