PyDev:显然不一致“来自导入的未定义变量”

时间:2018-01-04 02:08:53

标签: pydev

我刚刚开始使用PyDev,但很难理解如何管理错误报告。

例如,我已将bottle.py添加到项目的External Libs中,并将“bottle”添加到Python Interpreter配置Packages和Forced Builtins选项卡中。但是,在仅包含以下代码的文件中,第5行显示2个错误:“来自导入的未定义变量:请求”和“来自导入的未定义变量:get”。第3行还可以。

from bottle import request
def postd():
    return request.forms
def post_get(name, default=''):
    return request.POST.get(name, default).strip()

为什么PyDev在第5行报告错误?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

问题在于PyDev在将其添加到强制内置函数时会进行内省,但是瓶子不会像那样直接工作。

即:如果你打开一个shell并执行:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\tools\Miniconda\envs\check\lib\site-packages\bottle.py", line 166, in __get__
    if key not in storage: storage[key] = self.getter(obj)
  File "C:\tools\Miniconda\envs\check\lib\site-packages\bottle.py", line 1218, in POST
    pairs = _parse_qsl(tonat(self._get_body_string(), 'latin1'))
  File "C:\tools\Miniconda\envs\check\lib\site-packages\bottle.py", line 1185, in _get_body_string
    data = self.body.read(clen)
  File "C:\tools\Miniconda\envs\check\lib\site-packages\bottle.py", line 1197, in body
    self._body.seek(0)
  File "C:\tools\Miniconda\envs\check\lib\site-packages\bottle.py", line 166, in __get__
    if key not in storage: storage[key] = self.getter(obj)
  File "C:\tools\Miniconda\envs\check\lib\site-packages\bottle.py", line 1164, in _body
    read_func = self.environ['wsgi.input'].read
KeyError: 'wsgi.input'

您有错误(这会阻止PyDev正确分析该模块):

shouldChangeCharactersIn

解决方案包括在您自己的代码中创建自己的包装器,并在该位置通知这是预期的(该行中的Ctrl + 1将显示忽略特定行中的错误的选项) - {{3}有其他修复。