不清楚哪个Python版本用于远程调试(Eclipse Pydev)
以下指南在设置Eclipse Pydev(在本地计算机上)和远程调试(在虚拟机上)方面对我帮助很大: 如果我理解正确,我正在调试的应用程序必须在远程主机上启动。因此,应用程序使用远程Python版本 现在,在pydevd.settrace()之后,Eclipse(本地主机)告诉我它在stacktrace中使用本地python文件。 这是因为pydevd_文件_utils.py中的路径映射(从_ECLIPSE_到_PYTHON的路径)? 因为有些文件在这些映射之外(例如线程)不清楚哪个Python版本用于远程调试(Eclipse Pydev),python,eclipse,version,pydev,remote-debugging,Python,Eclipse,Version,Pydev,Remote Debugging,以下指南在设置Eclipse Pydev(在本地计算机上)和远程调试(在虚拟机上)方面对我帮助很大: 如果我理解正确,我正在调试的应用程序必须在远程主机上启动。因此,应用程序使用远程Python版本 现在,在pydevd.settrace()之后,Eclipse(本地主机)告诉我它在stacktrace中使用本地python文件。 这是因为pydevd_文件_utils.py中的路径映射(从_ECLIPSE_到_PYTHON的路径)? 因为有些文件在这些映射之外(例如线程) 想象一下以下情况
想象一下以下情况:我正在一台生产型(虚拟)机器(Python2.4)上调试我的应用程序,但我的Eclipse托管在一台更新的开发机器(默认情况下是Python2.7)上。应用程序将在远程2.4 python下运行吗?或者在本地2.7 python下?以下是确定当前python版本的两种方法 通过代码: 经由 直接命令: 也 主机名:
如果您正在使用代码,但不确定它是v2还是v3,则可以使用
import sys
try:
print sys.version
except:
print(sys.version)
我找到了答案。
我需要测试这种远程调试器方法
让我解释一下我是如何发现的:
我有一个使用python 2.6.5的本地系统。
我用Python2.7.3创建了一个新的远程系统(本例中为虚拟机)。
然后我分享了以下脚本:
import pydevd
print 'hello world'
# call debugger server to handle this breakpoint
pydevd.settrace('10.31.94.156', stdoutToServer=True, stderrToServer=True)
# fron now on the host (debugger server) has control over breakpoints,
# variables, stepping through code etc.
print 'hi again'
import sys
print sys.version # 2.7.3 (default, Sep 26 2013, 20:08:41)
# [GCC 4.6.3]
# now use a 2.7 feature:
x = {i : chr(65+i) for i in range(4)} # dict comprehension
print x # {0: 'A', 1: 'B', 2: 'C', 3: 'D'}
import socket
print socket.gethostname() # my virtual machine name
print 'done'
当然,我在我的主机上的Eclipse中添加了一些断点。有趣的是,本地解释器给出了关于列表理解的错误,而它实际上运行。它还可以在调试器变量窗格中很好地显示变量x
结论:远程解释器用于运行/评估代码。
调试器服务器帮助您,谢谢,但是调试器将在哪个Python版本下运行代码?这是宿主python还是来宾python版本?我不知道。我已经添加了如何获取主机名——添加它并查看它给您的是本地机器名还是远程机器名。谢谢,但是调试器将在哪个Python版本下运行代码?这是宿主python还是来宾python版本?
print socket.gethostname()
import sys
try:
print sys.version
except:
print(sys.version)
import pydevd
print 'hello world'
# call debugger server to handle this breakpoint
pydevd.settrace('10.31.94.156', stdoutToServer=True, stderrToServer=True)
# fron now on the host (debugger server) has control over breakpoints,
# variables, stepping through code etc.
print 'hi again'
import sys
print sys.version # 2.7.3 (default, Sep 26 2013, 20:08:41)
# [GCC 4.6.3]
# now use a 2.7 feature:
x = {i : chr(65+i) for i in range(4)} # dict comprehension
print x # {0: 'A', 1: 'B', 2: 'C', 3: 'D'}
import socket
print socket.gethostname() # my virtual machine name
print 'done'