2016-09-23 35 views
6

我正在导入一个模块,它会导入six,但我收到了这个奇怪的错误。Python - 无法导入名称视图

Traceback (most recent call last): 
    File "/Users/praful/Desktop/got/modules/categories/tests.py", line 13, in <module> 
    import microdata 
    File "build/bdist.macosx-10.10-intel/egg/microdata.py", line 4, in <module> 
    File "/Library/Python/2.7/site-packages/html5lib/__init__.py", line 16, in <module> 
    from .html5parser import HTMLParser, parse, parseFragment 
    File "/Library/Python/2.7/site-packages/html5lib/html5parser.py", line 2, in <module> 
    from six import with_metaclass, viewkeys, PY3 
ImportError: cannot import name viewkeys 

我在six.py倒是一看,它有它viewkeys

最新安装了six==1.10.0

+0

你确定没有在你的工作目录中命名'six.py'或其他吗?你可以在你的模块中尝试一个简单的'import six',然后'print(six)',看看它是否是你期望的。 – ShadowRanger

+0

不,没有。 – PythonEnthusiast

+0

我在python shell中也尝试过它。我试图只导入'从六个导入视图',它返回一个错误。 – PythonEnthusiast

回答

13

我有同样的问题:

> python 
Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import six 
>>> import xhtml2pdf.pisa 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Library/Python/2.7/site-packages/xhtml2pdf/pisa.py", line 3, in <module> 
    from xhtml2pdf.document import pisaDocument 
    File "/Library/Python/2.7/site-packages/xhtml2pdf/document.py", line 2, in <module> 
    from xhtml2pdf.context import pisaContext 
    File "/Library/Python/2.7/site-packages/xhtml2pdf/context.py", line 23, in <module> 
    import xhtml2pdf.parser 
    File "/Library/Python/2.7/site-packages/xhtml2pdf/parser.py", line 17, in <module> 
    from html5lib import treebuilders, inputstream 
    File "/Library/Python/2.7/site-packages/html5lib/__init__.py", line 16, in <module> 
    from .html5parser import HTMLParser, parse, parseFragment 
    File "/Library/Python/2.7/site-packages/html5lib/html5parser.py", line 2, in <module> 
    from six import with_metaclass, viewkeys, PY3 
ImportError: cannot import name viewkeys 
>>> exit() 

我跑以下步骤:

  • sudo -H pip uninstall six
  • sudo -H pip install six==1.9.0
  • 测试:错误仍然存​​在
  • sudo -H pip uninstall six==1.9.0
  • sudo -H pip install six==1.10.0

测试:

> python 
Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from six import viewkeys 
>>> import xhtml.pisa 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named xhtml.pisa 
>>> import xhtml2pdf.pisa 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "xhtml2pdf/pisa.py", line 3, in <module> 
    from xhtml2pdf.document import pisaDocument 
    File "xhtml2pdf/document.py", line 2, in <module> 
    from xhtml2pdf.context import pisaContext 
    File "xhtml2pdf/context.py", line 23, in <module> 
    import xhtml2pdf.parser 
    File "xhtml2pdf/parser.py", line 17, in <module> 
    from html5lib import treebuilders, inputstream 
ImportError: cannot import name inputstream 
>>> exit() 

所以viewkeys错误没有回来。

问题进口的InputStream似乎是在xhtml2pdf了一个错误:
https://github.com/xhtml2pdf/xhtml2pdf/issues/318

对于我这个固定的问题:
sudo -H pip install html5lib==1.0b8

所以毕竟,我真的不知道,如果最后一个命令可以解决整体问题,但这种方式现在对我来说很有效:

> python 
Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import xhtml2pdf.pisa 
>>> 
+0

我有同样的问题,并安装html5lib == 1.0b8给我相同的导入错误:/ – Matt

0

对我来说,PIP w因为不工作,所以我不能重新安装六个。

我所做的是:

下载最新的 “六个一” 包从这里: https://pypi.python.org/pypi/six

cd /tmp 
wget [GET LATEST SIX URL] 
tar xf six-1.10.0.tar.gz 
cd six-1.10.0 
python3 setup.py install 

现在PIP工作在Python 3,如果你需要它的Python 2只是改变“python3”代表最后一个命令中的“python2”。

1

这是我的MacBook Pro,OS X Yosemite,10.10上的帮助。5

1)检查了六个版本的Python是使用

import six 
print six.__version__ 

1.4.0 

2)寻找您的系统

sudo find/-name 'six*' 

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/lib/six.py 
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/lib/six.pyc 
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.py 
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.pyc 

3)所有六个Python包检查六个版本逐一

vi /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.py 

4)当文件打开时向下滚动以识别六个版本

5)手动删除所有包年长然后1.10.0

sudo rm /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.py 
sudo rm /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.pyc 

6)安装最新6包(例如1.11.0):

sudo pip install --ignore-installed six