【发布时间】:2016-09-18 20:04:55
【问题描述】:
无法从六个中导入任何内容。这两行都会产生错误:
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 和其他帖子):
- 切换的 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。 奇怪的是,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 导入行中显示错误。
【问题讨论】:
-
您在代码中显示的行是否是您尝试加载和运行的代码?您是否尝试过将这些行输入到 python shell 中?
-
是的,上面的导入行在我想要运行的代码中。我什至还没有输入操作代码,我只是想让所有的导入首先工作。此代码来自 Google Tensorflow 教程。当我在 python shell 中输入这些行时,我没有收到任何错误,所以也许这些只是我可以忽略的警告,正如 Burhan 在下面建议的那样?
-
所以,Burhan 告诉您的是,您需要运行知道大约 6 个的 Python 解释器才能导入它。显然,这是从命令行启动 shell 时得到的。您需要弄清楚如何让 PyCharm 或 IntelliJ 或任何您想使用的工具运行知道大约 6 个的解释器才能使导入工作。如果是他提到的缓存问题,那么该错误应该会随着缓存重建而消失。尝试删除名为 *.pyc 的文件和名为 pycache 的目录,看看是否有帮助。
-
谢谢汤姆。我试过你的建议,但没有改变。我在上面的帖子中添加了更多细节和屏幕截图。奇怪的是文件运行但没有留下 .pyc 文件..
-
你能做到
import six吗?如果有,你导入后six.__file__的值是多少?
标签: python intellij-idea pycharm six