我的PyCharm有问题.在我将Python从3.3.5更新到3.4之后,我在PyCharm中遇到了以下形式的恼人错误:
from multiprocessing import Queue, Process
PyCharm强调Queue
并Process
在红色和示出了一个未解决的引用.代码实际上在命令行和PyCharm内都运行良好.对于这些类,代码完成似乎也被打破了.
我怀疑有问题PYTHONPATH
,但我不确定如何解决它.
系统详细信息:通过Homebrew,Pycharm 3.1.1安装的Mac OS X 10.9.2,Python 3.4
这对PYTHONPATH来说不是问题.如果我们查看多处理\ __ 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__
值得注意的是,文件中没有任何内容看起来像Queue,Process等.
现在这是什么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类,但是看起来好像他们的优先级列表会很低.所以你可能只需要忍受它.(在同一条船上)