7

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

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 显示有效代码和其他帖子的未解决引用错误):

  • 切换 Python 解释器
  • IntelliJ:删除了idea文件
  • IDE -> 使缓存无效/重新启动
  • 使用相同的源创建了一个全新的项目
  • 切换 IDE(IntelliJ -> PyCharm)
  • 已验证的六个是当前的:

_

$ 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 中都没有错误,执行后,六个。文件= /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 导入行中显示错误。

4

3 回答 3

1

six仅安装在/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7,因此只有在 PyCharm/IntelliJ 中使用该解释器时它才会起作用

请注意,如果您创建新的虚拟环境,six则必须单独安装。

如果 PyCharm/IntelliJ 向您发出这些警告,但代码实际运行 - 那么这只是 PyCharm 的一个缓存问题,您可以放心地忽略它 - 很有可能在下一次缓存重建时 PyCharm 将更新其缓存。

于 2016-05-21T16:54:12.967 回答
1

这个问题似乎是由这个回答的(我不知道如何将这个标记为重复)。

所以不幸的是,由于“六”模块的动态特性,没有简单的解决方案,除非您为此模块实现自己的 python 骨架(这不是直截了当的)。

于 2016-09-21T15:25:35.097 回答
0

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

这个对我有用。

于 2016-12-13T07:41:55.877 回答