【问题标题】:PyCharm Python 3.4 issue: unresolved referencePyCharm Python 3.4 问题:未解决的参考
【发布时间】:2014-05-05 12:08:50
【问题描述】:

我的 PyCharm 有问题。在我将 Python 从 3.3.5 更新到 3.4 之后,我在 PyCharm 中出现了以下形式的烦人错误:

from multiprocessing import Queue, Process

PyCharm 用红色下划线 QueueProcess 并显示未解析的引用。该代码实际上在命令行和 PyCharm 内部都运行良好。这些类的代码完成似乎也被破坏了。

我怀疑PYTHONPATH 有问题,但不知道如何解决。

系统详情:Mac OS X 10.9.2、通过 Homebrew 安装的 Python 3.4、Pycharm 3.1.1

【问题讨论】:

    标签: macos python-3.x pycharm


    【解决方案1】:

    这不是 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())
    

    所以实际上,Queue 从未在模块本身中定义,而是通过一些动态代码,在运行时根据用户的操作系统正确设置。这就是为什么 Pycharm 不知道多处理模块中有 Queue 和 Process 类的原因。

    也许您可以提交错误报告并尝试让他们有选择地运行代码以找出这些动态名称或在此处创建异常并提出一些解决方法来告诉 Pycharm 实际上存在 Queue/Process 类,但是似乎它在他们的优先级列表中会很低。所以你可能只需要忍受它。 (在这里同舟共济)

    【讨论】:

    • 非常感谢您的解释,我恢复到 python 3.3.5。直到他们解决为止。这不是什么大问题,但可能会很烦人。
    • 这个问题已经修复了一段时间,据报道在 build 138.913
    【解决方案2】:

    如果 JetBrains 尚不存在,我肯定会报告一个问题,但我不建议仅仅因为您的 IDE 未按预期解释导入(实际的解释器仍然有效)而降级 Python。

    我有同样的问题,只需在未解析的引用上方添加# noinspection PyUnresolvedReferences 即可使编译器“错误”静音。当然,我希望能修复这个问题,一旦修复,我会删除 # noinspection 行,但它肯定不会阻止我使用 PyCharm 和 Python 3.4 编写代码。

    编辑:好像有人举报了:http://youtrack.jetbrains.com/issue/PY-12860

    编辑:据报道已在版本 138.913 中修复

    【讨论】:

      【解决方案3】:

      我也遇到了同样的问题。如果您使用的是 python 3.4.4,请尝试以下操作:

      from queue import Queue
      

      您可以在这里阅读更多内容:https://docs.python.org/3.4/library/queue.html

      【讨论】:

        猜你喜欢
        • 2015-11-12
        • 2014-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多