无法从Python六库中导入

时间:2016-05-21 16:47:39

标签: python intellij-idea pycharm six

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

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,Six 1.10.0。

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

  • Switched Python解释器
  • IntelliJ:删除了想法文件
  • 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. enter image description here 奇怪的是,main.py在PyCharm中运行时没有错误;打印“Hello”行(参见第二个屏幕截图)。 File runs OK 此屏幕截图显示设置中的项目解释程序: enter image description here 我还是难过。

---------- 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仍显示六个导入行中的错误。

3 个答案:

答案 0 :(得分:1)

six仅安装在/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7,因此仅当您在PyCharm / IntelliJ中使用该解释器时才能使用

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

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

答案 1 :(得分:1)

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

很遗憾,由于"六"的动态特性,没有简单的解决方案。模块,除非你为这个模块实现自己的python-skeleton(这不是straithforward)。

答案 2 :(得分:0)

你可以使用import six而不是six.moves import cPickle,然后使用six.moves.cPickle。

它对我有用。