Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不清楚哪个Python版本用于远程调试(Eclipse Pydev)_Python_Eclipse_Version_Pydev_Remote Debugging - Fatal编程技术网

不清楚哪个Python版本用于远程调试(Eclipse Pydev)

不清楚哪个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的路径)? 因为有些文件在这些映射之外(例如线程) 想象一下以下情况

以下指南在设置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'