我的PyCharm有问题。在将Python从3.3.5更新到3.4之后,PyCharm中出现了以下形式的恼人错误:
from multiprocessing import Queue, ProcessPyCharm用红色对Queue和Process进行下划线,并显示未解析的引用。实际上,代码在命令行和PyCharm内部都运行良好。对于这些类来说,代码完成似乎也被破坏了。
我怀疑PYTHONPATH有问题,但我不知道如何解决。
系统详细信息: Mac 10.9.2,Python3.4通过Homebrew安装,PyCharm3.1.1
发布于 2014-04-23 02:57:22
这不是PYTHONPATH的问题。如果我们查看multiprocessing\__init__.py,我们会看到以下内容:
#
# Copy stuff from default context
#
globals().update((name, getattr(context._default_context, name))
for name in context._default_context.__all__)
__all__ = context._default_context.__all__值得注意的是,文件中没有类似队列、进程等的内容。
这是什么context._default_context?如果我们看看multiprocessing\context.py,我们就会看到
class BaseContext(object):
...
def Queue(self, maxsize=0):
'''Returns a queue object'''
from .queues import Queue
return Queue(maxsize, ctx=self.get_context())因此,实际上,队列从未在模块本身中定义,而是通过一些动态代码在运行时根据用户的操作系统正确设置。这就是Pycharm不知道在多处理模块中存在队列和进程类的原因。
也许您可以提交一个bug报告,并尝试让它们有选择地运行代码来确定这些动态名称,或者在这里设置一个例外,并提出一些解决办法,告诉Pycharm实际上存在队列/进程类,但这似乎在它们的优先级列表中很低。所以你只能忍受它了,很可能。(在同一条船上)
发布于 2014-05-08 01:34:51
如果JetBrains还不存在,我肯定会报告一个问题,但我不建议仅仅因为您的IDE没有按预期解释导入(实际的解释器仍然有效)就降低Python的级别。
我也有同样的问题,只需在未解决的引用之上添加# noinspection PyUnresolvedReferences,就可以使编译器的“错误”消失。当然,我希望它能够被修复,并且一旦它是,我就会删除# noinspection行,但是它肯定不会阻止我使用PyCharm和Python3.4编写代码。
编辑:看上去有人举报了:http://youtrack.jetbrains.com/issue/PY-12860
编辑:据说在build 138.913中修复了
发布于 2016-04-15 09:03:47
我也有过同样的问题。如果您正在使用python 3.4.4,请尝试如下:
from queue import Queue您可以在这里阅读更多内容:https://docs.python.org/3.4/library/queue.html
https://stackoverflow.com/questions/22672024
复制相似问题