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 代码分析的“未定义变量”的主要内容,如果未能解决你的问题,请参考以下文章