无法从 Python 六个库导入

Cannot import from Python six library

无法从六个导入任何内容。这两行都会产生错误:

from six.moves.urllib.request import urlretrieve

--> Unresolved reference "urlretrieve"

from six.moves import cPickle as pickle

--> Unresolved reference "cPickle"

OSX 10.11.5。 IntelliJ 2016.1.2,PyCharm 2016.1.3,Python 2.7.11,六 1.10.0.

我尝试修复的内容(根据 PyCharm shows unresolved references error for valid code 和其他帖子):

_

$ sudo pip install -U six
Requirement already up-to-date: six in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/six-1.10.0-py2.7.egg

Python 我试过的 SDK:

Python 2.7.11 (/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7)
Python 3.5.1 (/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5)
Python 2.7.10 (/usr/local/bin/python2.7)

没有任何效果。欢迎提供帮助!谢谢。

------------ 2016 年 5 月 23 日更新------------------------ -----

运行 "from six.moves..." 从命令行导入行不会产生错误。命令行调用 Python 2.7.11。 PyCharm 也正在使用 Python 2.7.11,并且 PyCharm 也显示有六个可用 - 请参见第一个屏幕截图。项目中没有.pyc文件,只有main.py。 奇怪的是,main.py 在 PyCharm 内运行没有错误; "Hello" 行确实打印(见第二个屏幕截图)。 此屏幕截图显示了设置中的项目解释器: 我还是一头雾水。

------------ 2016 年 5 月 24 日更新----------------------------

import six 在代码和 python shell 中都没有错误,执行后,六个。file = /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/six-1.10.0-py2.7.egg/six.pyc. 但是,PyCharm IDE 仍然显示 six.moves 导入行中的错误。

six 仅安装在 /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7,因此只有在 PyCharm/IntelliJ

中使用该解释器时它才会起作用

请注意,如果您创建一个新的虚拟环境,则必须在其中单独安装 six

如果 PyCharm/IntelliJ 给你这些警告,但代码实际运行 - 那么这只是 PyCharm 的缓存问题,你可以安全地忽略它 - 可能在下一次缓存重建时PyCharm 将更新其缓存。

this one似乎回答了这个问题(我不知道如何将这个标记为重复)。

很遗憾,由于 "six" 模块的动态特性,没有 easy 解决方案,除非您为此模块实现自己的 python-skeleton (这不是直截了当的)。

您可以使用 import six 而不是 from six.moves import cPickle,然后使用 six.moves.cPickle.

对我有用。