Pydev 显示用于 Jython 代码分析的“未定义变量”

Posted

技术标签:

【中文标题】Pydev 显示用于 Jython 代码分析的“未定义变量”【英文标题】:Pydev showing 'undefined variable' for Jython code analysis 【发布时间】:2021-12-09 06:37:17 【问题描述】:

我已经使用 Eclipse、Jython 和 Pydev 很长时间了。在新版本到来时进行升级。直到最近,当 Pydev 代码完成开始将常见项目(如 dir 或 print)标记为“未定义变量”时,一切都运行良好。但程序运行正常。

错误日志显示:

'python 客户端仍然没有连接回 eclipse java vm(将重试..)' '尝试:5 次中的 2 次失败,再次尝试...(套接字连接仍然为空)'

5 次中的 5 次尝试更多

'连接到 python 进程时出错(最可能的失败原因是防火墙阻塞...配置错误的网络)'

此外,尝试创建实时 jython 控制台 CTRL+ALT+ENTER 会出现以下错误:

'创建交互式控制台'遇到了问题 初始化控制台时出错。 连接到控制台的意外错误。 未能从 pydevconsole 接收到合适的 Hello 响应。收到的最后一条消息:控制台已经以值退出:等待答案时为 1。

我花了很多时间在这里和其他地方寻找答案,其中包括检查建议:

混合 32/64 位安装;防火墙问题; IPV4 偏好;本地主机条目;路径问题和其他问题:到目前为止,我检查过的所有问题都没有成功。

软件是 Windows 10、Eclipse 4.21.0、Pydev 9.1.0.2021、Java JDK 11.0.13、Jython 2.7.2

如果在这个问题上提供任何进一步的帮助,我将不胜感激。

非常感谢

【问题讨论】:

【参考方案1】:

嗯,您会收到该消息,因为 PyDev 确实生成了一个 shell 并与之通信以收集代码完成结果,交互式控制台也是如此。

现在,在这两种情况下,您的用例似乎都阻止了套接字通信(如消息所述,通常的罪魁祸首是某些防火墙 - 或者可能是防病毒软件 - 或某些网络配置错误)。

不幸的是,我真的很难诊断它,因为它几乎与机器有关(我只能说我在这里检查了一些东西并且 Jython 运行良好,所以问题在于你的机器上的一些错误配置)。

我实际上已经计划停止要求套接字通信(用于从 shell 获取完成)并使用 stdin/stdout (https://www.brainwy.com/tracker/PyDev/1183),但这仍然没有完成。

由于 Jython 确实为您运行,您可以尝试创建一个简单的服务器来验证连接是否有效。

即:使用以下命令创建echo_server.py

import socket

if __name__ == '__main__':
    HOST = '127.0.0.1'
    PORT = 65432
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((HOST, PORT))
    s.listen(1)
    conn, addr = s.accept()
    print('Connected by', addr)
    data = conn.recv(1024)
    conn.sendall(data)
    print('Echo server finished')

client.py 与:

import socket

if __name__ == '__main__':
    HOST = '127.0.0.1'
    PORT = 65432
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    s.sendall(b'Hello, world')
    data = s.recv(1024)
    
    print('Received %r' % (data,))

然后运行服务器部分,然后运行客户端部分并检查它是否适合您。

【讨论】:

感谢您的回复。我在单独的命令窗口中运行了 echo_server 和客户端程序,它们正确完成。因此,jython/java 设置似乎没有问题。 我在Windows Defender中禁用了所有病毒和防火墙,并且没有其他病毒程序在运行,但仍然相同的错误:python客户端无法连接虚拟机。我认为它必须在 Eclipse 中的某个地方。对此有任何进一步的想法将不胜感激。 您能否在某处分享您的完整错误日志并在此处发布链接以便我查看? (也许那里隐藏着更多信息......) 谢谢,我会这样做,但不确定如何/在哪里“共享”文件。 如何获取相关信息,请参见:pydev.org/faq.html#HowdoIReportaBUG。

以上是关于Pydev 显示用于 Jython 代码分析的“未定义变量”的主要内容,如果未能解决你的问题,请参考以下文章

主要功能未在 Pydev Eclipse 中执行

如何修复 PyDev“导入未定义变量”错误?

PyDev 说来自导入的未定义变量:AF_INET

无法在 PyDev 中使用 Coverage,“文件没有统计信息”

为啥 Pydev 会给出内置关键字的语法错误?

Eclipse,PyDev“未指定项目解释器”